首页 > 解决方案 > 在编辑器中创建多个材质与在运行时创建多个材质

问题描述

我同时需要多种材料,它们之间的唯一区别应该是颜色,甚至纹理都是相同的,我必须一个一个地创建它们,我想知道哪种方式更好,在编辑器中创建它们并将它们存储在资产中或在游戏开始时创建它们作为脚本的临时材料

标签: unity3d

解决方案


这主要取决于您何时需要它们。

我假设您在启动时将需要所有这些。在这种情况下:

  • 在运行时实例化它们将使用更多 CPU 进行实例化,因此应用程序将需要更多时间来加载。
  • 在编辑器中创建它们需要静态存储数据,因此应用程序将占用更多内存

如果您在启动时不需要所有这些,您可以开始使用协程在后台生成它们。

public class MaterialSpawn : MonoBehaviour
{
    private Material[] materials;
    public int amount = 100;

    public static bool IsSpawning = false;
    private void Awake() { StartCoroutine(SpawnYourMaterial()); }

    private IEnumerator SpawnYourMaterial()
    {
        IsSpawning = true;
        int spawned = 0;
        while (spawned < amount)
        {
            //INSTANTIATE YOUR MATERIAL

            spawned++;
            yield return null;
        }

        IsSpawning = false;
    }
}

推荐阅读