什么时候引用的纹理实际加载?

时间:2014-11-23 13:15:50

标签: unity3d

我有一个附加到游戏对象的脚本,该游戏对象具有对纹理的引用。

游戏对象在开始时未启用,所以我的问题是:

什么时候纹理实际加载到内存中?启用游戏对象时或场景加载时?

1 个答案:

答案 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。