C# 在unity中使用颜色数据类型

C# 在unity中使用颜色数据类型,c#,visual-studio,unity3d,C#,Visual Studio,Unity3d,我试图在游戏开始时改变物体的颜色,但是我运行程序时什么也没发生。当我使用Player.GetComponent().material.color=color.red时,该程序可以运行,但我不想每次更改颜色时都重写该行 public GameObject Player; private Color Plcol; // Start is called before the first frame update void Start() { P

我试图在游戏开始时改变物体的颜色,但是我运行程序时什么也没发生。当我使用
Player.GetComponent().material.color=color.red
时,该程序可以运行,但我不想每次更改颜色时都重写该行

    public GameObject Player;
    private Color Plcol;

    // Start is called before the first frame update
    void Start()
    {
        Plcol = Player.GetComponent<Renderer>().material.color;
        Plcol = Color.red;
    }
公共游戏对象玩家;
专用彩色Plcol;
//在第一帧更新之前调用Start
void Start()
{
Plcol=Player.GetComponent().material.color;
Plcol=颜色。红色;
}

由于材质颜色使用的是PInvoke(调用C++),因此您需要直接指定,而不是为变量指定颜色,然后对其进行更改

public GameObject Player;

void Start()
{
    ChangeColor(Color.red);
}

public void ChangeColor(Color newColor)
{
    Player.GetComponent<Renderer>().material.color = newColor;
    //or should work as well
    var material = Player.GetComponent<Renderer>().material;
    material.color = newColor;
}
公共游戏对象玩家;
void Start()
{
变色(颜色为红色);
}
公共void ChangeColor(颜色newColor)
{
Player.GetComponent().material.color=newColor;
//或者也应该起作用
var material=Player.GetComponent().material;
material.color=newColor;
}

创建一个名为SetPlayerColor的函数,并将不想重新键入的行放入其中。您的代码现在更干净、更自我记录。您只需替换
Plcol
的字段值即可。。。这不会改变
材料的颜色。。。如果你说,例如,
var x=transform.position.x;x=5。。。为什么要更改变换位置?