从脚本更改预制颜色

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

【讨论】:

以上是关于从脚本更改预制颜色的主要内容,如果未能解决你的问题,请参考以下文章

如何使用脚本在 Illustrator 中更改 LAB 颜色的值?

如何更改动作脚本中文本区域的颜色?

无法更改附加到游戏对象的脚本上的公共变量。值在播放时恢复

如何应用亮度控制和更改文本颜色?

菜单背景在滚动时更改颜色

如何更改当前光标位置指示器的颜色?