在游戏时间更改预制开始颜色

时间:2016-11-16 18:30:17

标签: c# unity3d

由于游戏中的白天/黑夜周期,我需要根据游戏时间更改游戏时间内烟雾预制件的颜色,但我很难确定如何多次更改它。

我的脚本可以正常使用我想要的起始颜色来实例化预制件,但之后我无法再次更改它。

这是我的代码:

class Smoke1 : MonoBehaviour
{
    public GameObject myPrefab;
    public  static GameObject newSmoke;
    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<ParticleSystem>().startColor = Color.red;           
        }

    void Update()
        {
        if (TimeManager.gametimeDecimal < 6.0m)       
            newSmoke.GetComponent<ParticleSystem>().startColor = Color.blue;

        if (TimeManager.gametimeDecimal >= 6.0m && TimeManager.gametimeDecimal <= 8.0m)
            newSmoke.GetComponent<ParticleSystem>().startColor = Color.yellow;

        if (TimeManager.gametimeDecimal > 8.0m && TimeManager.gametimeDecimal < 19.0m)
            newSmoke.GetComponent<ParticleSystem>().startColor = Color.green;
        }

这是我的等级:enter image description here

当我在游戏时间通过检查员手动更改起始颜色时,它可以正常工作,但我无法确定如何使我的脚本执行此操作。

你可以给我任何建议吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

您已定义了&#39; newSmoke&#39;在您的Start方法中再次变量,因此当您实例化一个对象时,它不会进入静态变量,而是一个名为相同的局部变量。

因此,您的Start的第一行应更改为:

String username = "joe.bloggs";
SqlCommand sqlQuery = new SqlCommand("SELECT user_id, first_name,last_name FROM users WHERE username = ?username",  sqlConnection);
sqlQuery.Parameters.AddWithValue("?username", username);