【发布时间】:2014-11-23 22:02:15
【问题描述】:
我有一个脚本附加到一个引用纹理的游戏对象。
游戏对象在开始时未启用,所以我的问题是:
纹理何时实际加载到内存中?何时启用游戏对象或何时加载场景?
【问题讨论】:
标签: unity3d
我有一个脚本附加到一个引用纹理的游戏对象。
游戏对象在开始时未启用,所以我的问题是:
纹理何时实际加载到内存中?何时启用游戏对象或何时加载场景?
【问题讨论】:
标签: unity3d
你可以测试一下。您创建一个带有脚本的游戏对象,将纹理的引用作为公共变量并禁用该游戏对象。然后,您创建另一个游戏对象,它也有一个脚本,并尝试访问另一个脚本中对纹理的引用。例如。我用预制件做了一个小测试。
游戏对象 1,已禁用并附有此脚本:
using UnityEngine;
using System.Collections;
public class ScriptOne : MonoBehaviour
{
// reference to the prefab/texture
public GameObject prefab;
// Not called since the object is disabled
// will be called as soon as gameobject 1 gets enabled
private void Awake()
{
Debug.Log("prefab: " + prefab);
}
}
Gameobject 2,已启用并附有此脚本:
using UnityEngine;
using System.Collections;
public class ScriptTwo : MonoBehaviour
{
// Reference to gameobject 1
public GameObject other;
private void Awake()
{
Debug.Log("other: " + other.GetComponent<LoadOrderTest>().prefab);
}
}
这将导致控制台中的有效输出(其他:...)。
如果您之所以问这个问题是因为您希望仅在需要时才加载它们(如果确实需要,以节省内存),那么您必须在运行时使用 Awake 或 OnEnable 中的“Resources.Load”加载它们.
【讨论】: