Unity3d 在运行时在编辑器vs中创建多个材质
我需要同时使用多种材料,它们之间的唯一区别应该是颜色,甚至纹理都是一样的,我必须一个接一个地创建它们,我不知道哪种方法更好,要在编辑器中创建它们并将它们存储在资源中,或者在游戏开始时将它们作为脚本中的临时材料创建,这主要取决于您何时需要它们 我假设你在创业时需要所有这些。在这种情况下:Unity3d 在运行时在编辑器vs中创建多个材质,unity3d,Unity3d,我需要同时使用多种材料,它们之间的唯一区别应该是颜色,甚至纹理都是一样的,我必须一个接一个地创建它们,我不知道哪种方法更好,要在编辑器中创建它们并将它们存储在资源中,或者在游戏开始时将它们作为脚本中的临时材料创建,这主要取决于您何时需要它们 我假设你在创业时需要所有这些。在这种情况下: 在运行时实例化它们将使用更多的CPU进行实例化,因此应用程序将需要更多的时间来加载 在编辑器中创建它们将需要静态存储数据,因此应用程序将占用更多内存 如果您在启动时不需要所有这些,您可以开始在后台使用协同程序
- 在运行时实例化它们将使用更多的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;
}
}
公共类材料典当:单一行为
{
私人材料[]材料;
公共int金额=100;
公共静态bool IsSpawning=false;
私有void Awake(){start例程(SpawnYourMaterial());}
私有IEnumerator材质()
{
IsPawning=true;
int繁殖=0;
while(繁殖<数量)
{
//实例化你的材料
产生++;
收益返回空;
}
IsSpawning=假;
}
}
感谢您的回复,我认为CPU消耗在我的情况下更为重要,因此我将在资产中创建它们。从性能角度看,差异是可以忽略的。我几乎总是更喜欢代码而不是手工操作,即使只是为了减少错误,让以后更容易更改内容。CPU和内存方面的差异可以忽略不计。我会选择更安全的选择(因此使用内存),以避免不必要的复杂性。除非你正在创造大量的材料(几千?可能不是。很可能是十万?)。在这种情况下,我将使用协同程序实现。但这里我们继续讨论观点。我需要在启动时加载所有材料,所以协同程序对我来说没有用处。最后我写了一些代码,现在材料是从脚本。我这样做是因为自动化,而且我不知道加载场景之前需要多少材料,所以脚本方式更好。目前材料为5种(我知道太少了),但在以后的开发过程中,它们的数量可能会迅速增加。谢谢你的建议