我有一个附加到游戏对象的脚本,该游戏对象具有对纹理的引用。
游戏对象在开始时未启用,所以我的问题是:
什么时候纹理实际加载到内存中?启用游戏对象时或场景加载时?
答案 0 :(得分:0)
你可以测试一下。您创建一个带有脚本的游戏对象,其中将纹理引用为公共变量并禁用游戏对象。然后你创建另一个游戏对象,它也有一个脚本,试图访问另一个脚本中对纹理的引用。例如。我用预制件做了一点测试。
Gameobject 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);
}
}
这将导致控制台中的有效输出(其他:...)。
如果你问这个是因为你只想在需要时加载它们(如果你真的需要的话就节省内存),那么你将不得不在运行时加载它们&#34; Resources.Load&#34 ;在Awake或OnEnable。