与在运行时在编辑器中创建多个材料

时间:2019-07-05 08:54:12

标签: unity3d material

我需要同时使用多种材料,并且它们之间的唯一区别应该是颜色,即使纹理是相同的,我也必须一一创建它们,我想知道哪种方法更好,可以在编辑器中创建并存储它们或在游戏开始时作为脚本中的临时材料创建它们

1 个答案:

答案 0 :(得分:1)

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

我假设您将在启动时全部使用它们。在这种情况下:

  • 在运行时实例化它们将使用更多的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;
    }
}