Unity3d 何时实际加载引用的纹理?

Unity3d 何时实际加载引用的纹理?,unity3d,Unity3d,我有一个脚本附加到一个游戏对象上,这个游戏对象引用了一个纹理 游戏对象在开始时未启用,因此我的问题是: 纹理何时实际加载到内存中?当游戏对象启用或场景加载时?您可以对此进行测试。你创建了一个游戏对象,上面有一个脚本,它引用了纹理作为公共变量,并禁用了游戏对象。然后创建另一个游戏对象,该游戏对象也有一个脚本,并尝试访问对另一个脚本中纹理的引用。我用预制件做了一个小测试 Gameobject 1,已禁用,并已附加此脚本: using UnityEngine; using System.Collect

我有一个脚本附加到一个游戏对象上,这个游戏对象引用了一个纹理

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


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

您可以对此进行测试。你创建了一个游戏对象,上面有一个脚本,它引用了纹理作为公共变量,并禁用了游戏对象。然后创建另一个游戏对象,该游戏对象也有一个脚本,并尝试访问对另一个脚本中纹理的引用。我用预制件做了一个小测试

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);
    }
}
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);
    }
}
Gameobject 2,已启用并连接了此脚本:

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);
    }
}
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);
    }
}
这将导致控制台中的有效输出其他:


如果您问这个问题是因为您希望仅在需要时加载它们以节省内存(如果确实需要的话),然后,您必须在运行时使用资源加载它们。在唤醒或OnEnable中加载。

我曾考虑过用这种方法进行测试,但我立即假设texture2d/texture可能有一个特殊条件,可以在获取程序中启用实际加载。这就是我应该怎么做的,并且可能会提供一个特殊的选项来加载场景开始@也许这回答了你的问题