简体   繁体   English

用户在游戏中保存材料

[英]Save Material in game by user

i Have color picker in my game to customize character clothes by user in game.我在我的游戏中有颜色选择器,可以在游戏中由用户自定义角色衣服。 how can i save this changes?我怎样才能保存这个更改? i've try this way but doesn't work and i don't know why:我试过这种方式,但不起作用,我不知道为什么:

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);
}

thanks谢谢

You are not updating the PantSaver value.您没有更新PantSaver值。

It should probably rather be它可能应该是

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

In general a property might be of good use here:一般来说,一个属性在这里可能会有很好的用处:

private int _pantSaver;
private int PantSaver
{
    get => _pantSaver;
    set
    {
        _pantSaver = value;
        PlayerPrefs.SetInt("Saver", value);
        PlayerPrefs.Save();
        renderer.material = ShirtColorMat[value];
    }
}

This way everytime you assign a new value to PantSaver it is automatically saved and the renderer updated.这样,每次您为PantSaver分配新值时,它都会自动保存并更新渲染器。

So then you would only need to do那么你只需要做

public void _000000()
{
    PantSaver = 0;
}

Finally please rename _000000 to something more meaningful like eg ResetPant or something similar.最后请将_000000重命名为更有意义的名称,例如ResetPant或类似名称。

You might in Save() want to say PlayerPrefs.SetInt("Saver", ShirtColorMat[0]);你可能想在Save()中说PlayerPrefs.SetInt("Saver", ShirtColorMat[0]); instead.反而。 What you have in "PantSaver" is not a reference but a value .您在“PantSaver” 中拥有的不是参考而是价值 This means that with the above code you are currently first getting the value "Saver" and then setting the same value again.这意味着使用上面的代码,您当前首先获取值“Saver”,然后再次设置相同的值。

The PlayerPrefs.SetInt 's first string parameter is the key you save it to and later can get it from. PlayerPrefs.SetInt的第一个字符串参数是您保存它的键,稍后可以从中获取它。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM