如何更改实例化对象的颜色?

时间:2019-04-07 20:07:15

标签: c# unity3d

我只想在到达相机的特定点时更改其颜色,然后转到左侧并再次更改。该对象是宝石。

我尝试这样做:

void Rendercolor()
{
    render =  Gem.GetComponent<SpriteRenderer>();
    random = new Color(Random.Range(0, 255), 
    Random.Range(0,255),Random.Range(0,255),255);
}

void Update()
{
    Rendercolor();

    if (direction == DirecaoGameObject.Right)
    {
        Gem.transform.Translate(Vector3.right * Time.deltaTime 
        *velocity);
        if (Gem.transform.position.x >= right.position.x)
        {
            render.color = random;
            direction = SortdirecaoGameObject(direction);

        }
    }

2 个答案:

答案 0 :(得分:0)

我明白了.....我没有使用0255,而是输入了0f,1f。它成功了。...

答案 1 :(得分:0)

一个适合您的编程风格的词:从名字Rendercolor开始不清楚此方法的作用。除了创建颜色之外,它还具有渲染组件。同样,它不返回任何内容,而是设置一些全局字段。以下结构会更清楚。

Color CreateRandomColor()
{
    return new Color(Random.Range(0, 255), Random.Range(0, 255), Random.Range(0, 255), 255);
}

void Update()
{
    if (direction == DirecaoGameObject.Right)
    {
        Gem.transform.Translate(Vector3.right * Time.deltaTime * velocity);
        if (Gem.transform.position.x >= right.position.x)
        {
            // Use local variable here.
            var spriteRenderer =  Gem.GetComponent<SpriteRenderer>();
            spriteRenderer.color = CreateRandomColor();
            direction = SortdirecaoGameObject(direction);
        }
    }
}

spriteRenderer和颜色是在嵌套if内创建的。如果没有执行if,则没有必要事先创建它们。