C# 由用户保存游戏中的材料

C# 由用户保存游戏中的材料,c#,unity3d,C#,Unity3d,我在我的游戏中有颜色选择器来定制游戏中的角色服装。 如何保存这些更改? 我尝试过这种方法,但不起作用,我不知道为什么: public Material[] ShirtColorMat; Renderer renderer; int PantSaver; void Start() { renderer = this.GetComponent<Renderer>(); PantSaver = PlayerPrefs.GetInt("Saver");

我在我的游戏中有颜色选择器来定制游戏中的角色服装。 如何保存这些更改? 我尝试过这种方法,但不起作用,我不知道为什么:

public Material[] ShirtColorMat;

Renderer renderer;
int PantSaver;

void Start()
{
    renderer = this.GetComponent<Renderer>();
    PantSaver = PlayerPrefs.GetInt("Saver");
}

public void _000000()     // i use this on button 
{
    renderer.material = ShirtColorMat[0];
    
    Save();
}
 void Save()
{
    PlayerPrefs.SetInt("Saver", PantSaver);
}
公共材料[]衬衫配色;
渲染器渲染器;
int PantSaver;
void Start()
{
renderer=this.GetComponent();
PantSaver=PlayerPrefs.GetInt(“Saver”);
}
public void _000000()//我使用这个on按钮
{
renderer.material=ShirtColorMat[0];
Save();
}
作废保存()
{
PlayerPrefs.SetInt(“Saver”,PantSaver);
}
谢谢

您可能在
Save()
中想说
PlayerPrefs.SetInt(“Saver”,ShirtColorMat[0])取而代之。“PantSaver”中的内容。这意味着使用上述代码,您当前首先获得值“Saver”,然后再次设置相同的值


的第一个字符串参数是保存到的键,以后可以从中获取。

您没有更新
PantSaver

也许应该是这样

public void _000000()
{
    PantSaver = 0;
    renderer.material = ShirtColorMat[PantSaver];
    
    Save();
}
 void Save()
{
    PlayerPrefs.SetInt("Saver", PantSaver);
}

通常情况下,此处的物业可能很有用:

private int _pantSaver;
private int PantSaver
{
    get => _pantSaver;
    set
    {
        _pantSaver = value;
        PlayerPrefs.SetInt("Saver", value);
        PlayerPrefs.Save();
        renderer.material = ShirtColorMat[value];
    }
}
这样,每次将新值指定给
PantSaver
时,它都会自动保存,并更新渲染器

那么你只需要

public void _000000()
{
    PantSaver = 0;
}

最后,请将
\u000000
重命名为更有意义的名称,例如
ResetPant
或类似名称。

ShirtColorMat[0]
将是
材料。。不是
int
。。。如何将
材质
保存为
int
?可以从材质中获取颜色值并将其保存为字符串或多个int。