Tipo de referencia del tipo de parámetro de Unity

Insertar descripción de la imagen aquí

tipo de referencia

En Unity, los tipos de referencia se refieren a aquellos tipos de datos que almacenan referencias a objetos en la memoria. La siguiente es una introducción a los tipos de referencia comunes en Unity:

  1. Nodo (objeto de juego):

    • En Unity, GameObject es el tipo de referencia más básico. Los objetos del juego son entidades en la escena y pueden contener varios componentes y datos para representar objetos, personajes, accesorios, etc. en el juego.
    • Los objetos de juego son tipos de referencia, por lo que puedes asignar un objeto de juego a otra variable en tu script, compartiendo así una referencia al mismo objeto de juego.

    Ejemplo:

    public GameObject player; // 游戏对象引用
    
    void Start()
    {
          
          
        GameObject enemy = player; // 共享 player 游戏对象的引用
        enemy.transform.Translate(Vector3.forward);
    }
    
  2. Componente:

    • En Unity, los componentes son módulos adjuntos a objetos del juego que agregan diferentes funcionalidades y comportamientos. Por ejemplo, el componente Renderer controla la representación de objetos y el componente Rigidbody controla el comportamiento físico de los objetos.
    • Los componentes son tipos de referencia, por lo que puede compartir una referencia al mismo componente asignándolo a otra variable.

    Ejemplo:

    public Renderer objectRenderer; // 渲染器组件引用
    
    void Start()
    {
          
          
        Renderer enemyRenderer = objectRenderer; // 共享 objectRenderer 渲染器组件的引用
        enemyRenderer.material.color = Color.red;
    }
    
  3. Activo:

    • En Unity, los recursos son elementos reutilizables en el proyecto, como materiales, texturas, modelos, audio, etc. Los activos se crean y administran en una ubicación dentro del proyecto y luego se pueden usar en la escena.
    • Los recursos son tipos de referencia. Puede asignar una referencia de recurso a una variable en un script y luego usar el mismo recurso en varias ubicaciones de la escena.

    Ejemplo:

    public Material brickMaterial; // 材质资源引用
    
    void Start()
    {
          
          
        Renderer renderer = GetComponent<Renderer>();
        renderer.material = brickMaterial; // 使用共享的 brickMaterial 材质资源
    }
    

En Unity, el uso de tipos de referencia puede lograr el intercambio de objetos y evitar la creación repetida de objetos, mejorando así el rendimiento y la eficiencia. Al mismo tiempo, también permite operar el mismo objeto en diferentes lugares, asegurando coherencia y sincronización.

La diferencia entre tipos de referencia y tipos de valor.

Existen algunas diferencias importantes entre los tipos de referencia y los tipos de valores en términos de asignación, que se reflejan principalmente en la replicación de datos, el intercambio de referencias y la gestión de memoria:

  1. Copia de datos:

    • La asignación de tipos de valor copia los datos en sí, no una referencia a los datos. Por lo tanto, modificar el valor de una variable no afecta el valor de otra variable.
    • La asignación de tipos de referencia es una referencia de copia, es decir, la variable almacena una referencia al objeto en lugar del objeto en sí. Varias variables pueden hacer referencia al mismo objeto, por lo que modificar una variable puede afectar a otras variables que hacen referencia al mismo objeto.
  2. Compartir cotización:

    • La asignación de tipos de valores copia datos y cada variable tiene su propio almacenamiento de memoria independiente. La modificación de una variable no afecta a otras variables.
    • La asignación de tipos de referencia es una referencia de copia y varias variables pueden hacer referencia al mismo objeto. La modificación de una variable de tipo de referencia puede afectar a otras variables que hacen referencia al mismo objeto.
  3. Gestión de la memoria:

    • La asignación de memoria y la desasignación de tipos de valores se realiza en la pila. Cuando finaliza el alcance de las variables, su memoria se desasignará automáticamente.
    • La asignación de memoria de los tipos de referencia se realiza en el montón y el recolector de basura es responsable de recuperar la memoria de los objetos que ya no se utilizan. Esto introduce cierta sobrecarga de rendimiento.
  4. Pasar parámetros:

    • Cuando pasa un tipo de valor a una función, la función obtiene una copia del valor. Las modificaciones a los parámetros no afectan los valores originales.
    • Cuando pasa un tipo de referencia a una función, la función obtiene una copia de la referencia, lo que significa que la función puede modificar el objeto original.

En resumen, la diferencia entre tipos de valor y tipos de referencia en términos de asignación radica principalmente en el mecanismo de copia de datos y intercambio de referencias. Los tipos de valor operan sobre datos directamente, mientras que los tipos de referencia operan sobre referencias a objetos. Estas diferencias requieren un manejo cuidadoso en la programación para garantizar la correcta manipulación de datos y gestión de la memoria.

Supongo que te gusta

Origin blog.csdn.net/weixin_74850661/article/details/132598271
Recomendado
Clasificación