从脚本更改预制颜色
Posted
技术标签:
【中文标题】从脚本更改预制颜色【英文标题】:Change prefab color from script 【发布时间】:2016-11-16 16:22:00 【问题描述】:我有一个烟雾预制件,我需要从脚本中更改颜色,因为颜色会在播放期间发生变化。
我正在实例化预制件并尝试将颜色更改为红色:
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);
正如您在图片中看到的,预制件作为材料但脚本根本没有改变颜色(图片中的黑色):
你知道如何解决这个问题吗?
【问题讨论】:
我刚刚注意到有关缺少网格渲染器的错误,如何将其添加到由脚本实例化的预制件中? 【参考方案1】:您必须更改ParticleSystem
的起始颜色,而不是不存在的MeshRenderer
的材质。
newSmoke.GetComponent<ParticleSystem>().startColor = Color.red ;
https://docs.unity3d.com/ScriptReference/ParticleSystem-startColor.html
【讨论】:
以上是关于从脚本更改预制颜色的主要内容,如果未能解决你的问题,请参考以下文章