我有一个烟雾预制件,我需要更改脚本中的颜色,因为在播放时间颜色会发生变化。
我正在实例化预制件并尝试将颜色更改为红色,如下所示:
class Smoke1 : MonoBehaviour
{
public GameObject myPrefab;
public GameObject canvasObject;
void Start()
{
GameObject newSmoke = Instantiate(myPrefab, new Vector3(397, -394, 90), Quaternion.Euler(-90, 0, 0)) as GameObject;
newSmoke.transform.SetParent(canvasObject.transform, false);
newSmoke.transform.localScale = new Vector3(1, 1, 1);
newSmoke.GetComponent<MeshRenderer>().material.SetColor("_Color",Color.red);
}
正如您在图片中看到的那样,预制件作为材料但脚本根本没有改变颜色(图中黑色):
你对如何解决这个问题有任何想法吗?
答案 0 :(得分:2)
您必须更改ParticleSystem
的起始颜色,而不是不存在的MeshRenderer
的材料。
newSmoke.GetComponent<ParticleSystem>().startColor = Color.red ;
https://docs.unity3d.com/ScriptReference/ParticleSystem-startColor.html