❤️Combate real de UNITY avanzado: el prefacio más simple y sin pretensiones-1

  • prefacio

        El año pasado y este año fueron dos años desafortunados. Desde finales del año pasado hasta mediados de este año, comencé mi negocio con dos pequeños socios. Trabajaba como obrero mientras comenzaba un negocio. Mi vida era realmente satisfactoria. , y no tuve tiempo para eso. Te vas a otras cosas, y después de perder mucho dinero, tiempo y energía, solo agregas un poco de experiencia y experiencia moderada. Cuando entras en contacto con la diferencia entre ser un jefe y siendo gerente, también ves todo tipo de diferencias.La cara de una persona de carácter, por supuesto, hay muchos amigos que me han ayudado, les estoy muy agradecido.
        Cuando no tenía ninguna preparación para hacer esto, todavía insistía en hacerlo. Este impulso no sucedió en poco tiempo. Fue cuando profundamente no sabía qué hacer después de llegar a los 30+. Una manera , lo ridículo es rayado y magullado por la realidad.
        En marzo de este año supe que mi esposa estaba embarazada, me emocioné mucho cuando escuché la noticia por primera vez, y entonces me enfrenté a la disyuntiva de seguir gastando dinero en emprender un negocio o elegir una familia. , mis dos hijos y yo Mis parejas también tuvimos desacuerdos, pero aún así los convencí, y luego sentí aún más la fuerte presión sobre mis hombros, y también espero que mi bebé pueda aterrizar en el suelo de manera saludable.

        ¡Este tutorial también puede considerarse como un regalo de agradecimiento para mí cuando me esté acercando a la mediana edad! También espero que aquellos que están en la misma industria puedan evitar desvíos.

       ¡Extra!¡Extra!¡El precio más bajo de la historia! ¡El precio más bajo de la historia! !
      Vendo todo tipo de lidar, incluidos, entre otros, <Silan A2/A3/S series> <YDLidar-G4> <Star second TOF> <Beiyang UST-10LX>, tenga en cuenta el modelo que necesita, lo veré directamente citado
_ También emprender todo tipo de proyectos de externalización de juegos interactivos de radar . Puede agregar WeChat directamente para comunicarse conmigo.


  • breve introducción

     En este avance de combate real, se producirá una música falsa en la nube de NetEase, que incluye:
        (1) Introducción básica y uso de cada marco
        (2) Usar la herramienta de empaquetado Game Framework para generar recursos
        (3) Usar ILRuntime para actualizar el código
        (4) ) Introducción a varios patrones de diseño de uso común
        (5) Uso del atlas de TexturePacker
        (6) Componente de desplazamiento infinito
        (7) <Desconocido>
     Debe crear manualmente proyectos de proyectos e integrar varios marcos usted mismo, y los detalles no se presentarán demasiado. necesita entender y escribir por sí mismo, y la parte que se acerca lo ignorará

Esta es la versión genuina de Wangyiyun.

     Versión de unidad: 2020.1.0f1

     Versión de Visual Studio: Comunidad 2019

     El marco se divide en tres pasos, combinando tres marcos comunes actualmente en Internet:

  1. Game Framework Game
    Framework es un marco de juego basado en el motor de Unity. Encapsula principalmente módulos de uso común en el proceso de desarrollo de juegos, estandariza el proceso de desarrollo en gran medida, acelera la velocidad de desarrollo y garantiza la calidad del producto.
    El marco se divide en dos capas, la lógica GameFramework subyacente y la capa superior UnityGameFramework combinada con la lógica mono .
    Dirección del marco   https://github.com/EllanJiang/GameFramework/
  2. ILRuntime
    El proyecto ILRuntime proporciona una plataforma basada en C# 纯C#实现y 快速el tiempo de ejecución de IL, de modo que el código se puede actualizar en caliente en el entorno de hardware (como iOS) que no es compatible con JIT 方便. Dirección del marco   GitHub - Ourpalm/ILRuntime: Pure C# IL Interpreter Runtime, que es rápido y confiable para requisitos de secuencias de comandos en entornos, donde no es posible hacer jitting.可靠
  3. ETServer
    ET es un cliente de juegos de código abierto (basado en unity3d) marco de trabajo de doble extremo del lado del servidor. El servidor es un servidor de juegos distribuido desarrollado con el núcleo C#.net. Se caracteriza por una alta eficiencia de desarrollo, un sólido rendimiento y un doble extremo. código lógico compartido. , El mecanismo de actualización en caliente del cliente y el servidor está completo y, al mismo tiempo, admite el protocolo websocket udp tcp confiable, admite la búsqueda de ruta de refundición 3D en el servidor, etc.
    Dirección del marco   https://github.com/egametang/ET

     En primer lugar, todo el mundo debe poder utilizar Game Framework primero. Esta parte se ha escrito en detalle en un blog, y puedes entenderla siguiendo la calabaza. También se requiere pensamiento de patrón de diseño .

        Complementos:

AVProVídeo Reproducción de video local/Internet Descargar    código de extracción de dirección: cdz4
uAudio Mp3 PlayerStreamer Reproducción de audio local/en red Descargar    código de extracción de dirección: ey3d
DOTentre complemento de animación   enlace de descarga
Columna vertebral animación esquelética  enlace de descarga
Importador de TexturePacker atlas enlace de descarga

  • estilo de código

Esto es solo un hábito personal y no representa el punto de vista de todos.

(1) Formato de denominación de código

Nombre de variable de miembro de clase m_MiVariable
Denominación de variables estáticas s_MiVariable
nomenclatura de funciones

Nombre según función, por ejemplo:

Obtener tipo de variable: GetVariableType()

Establecer tipo de variable: SetVariableType()
Cambiar tipo de devolución de llamada: OnChangedVariableTypeCallBack()

(2) Acerca de la visualización de la vista Inspector en Unity

//使用此特性可以将 私有的/受保护的 显示在面板上, 同时通过类去调用的时候不会显示此变量
[SerializeField]
private Text m_AppName = null;

//对于需要通过类去调用私有变量的时候, 封装一个属性变量去传递
public Text AppName
{
    get { return m_AppName; }
}

//外部既可以调用也可以设置
public Text AppNameExample1
{
    get { return m_AppName; }
    set { m_AppName = value; }
}

//外部仅能调用, 仅类的内部设置值
public Text AppNameExample2
{
    get;
    private set;
}

¿No crees que el código se ve muy refrescante? Aunque la cantidad de código ha aumentado, mirar el código es agradable para ti y para los demás.

(3) Notas

Si el nombre de la función es lo suficientemente bueno, no hay necesidad de comentar, por ejemplo:

private void SearchMusic()
{
}

private void DownloadMusic(int id, string songName, string singer)
{
}

private void PlayMusic(int id, int duration)
{
}

¿Crees que tal código necesita ser comentado?

public static Texture2D BeautySkinWhiteningDermabrasion(this Texture2D texture2D)
{
}

Si este es el caso, sugiero que es mejor hacer un comentario. Por supuesto, si quiere pensar detenidamente, no necesita hacer un comentario, pero este tipo de comportamiento no se recomienda, y espero que lo hará y lo apreciará.

(4) Establecer una clase de datos estáticos globales GlobalData.cs

(5) Uso flexible, por ejemplo: conflicto UnityEngine.Object y System.Object, puede usar
        SysObject = System.Object para tratar.

(6) También hay todo tipo de códigos que hacen que la gente se enoje, por favor no los imites.

try
{
    //TODO:
}
catch(Exception e)
{
    Application.OpenURL("http://stackoverflow.com/search?q="+e.message,"_blank");
}
pause_state = pause_state == false ? true : false;
[SerializeField]
private InputField m_SearchMusicInput = null;

m_SearchMusicInput.onValueChanged.AddListener(OnSearchMusicValueChanged);

private void OnSearchMusicValueChanged(string content)
{
    m_SearchMusicInput.text = content;
}

Piensa en algo más divertido para agregar....


A continuación, ¡comenzará el capítulo de producción!
Dado que el blog se escribe mientras se produce, ¡el progreso será lento! ¡
Normalmente no hay tiempo para escribir los fines de semana!
Los amigos interesados ​​pueden prestar atención a una ola

Supongo que te gusta

Origin blog.csdn.net/flj135792468/article/details/120166222
Recomendado
Clasificación