亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用 PlayerPrefs 保存對象的顏色值?

如何使用 PlayerPrefs 保存對象的顏色值?

C#
開心每一天1111 2022-07-23 09:03:02
我正在嘗試根據用戶選擇的內容保存對象的顏色,并在按鍵時將它們加載回屏幕。在答案的幫助下,我設法找到了一種使用 PlayerPrefs 保存顏色 RGB 值的方法,但是,我不確定如何將“colorObject”設置為對象的當前顏色。我見過使用 new Color() 和預定義顏色集的解決方案,但我想保存用戶選擇的內容。有沒有辦法將“colorObject”設置為對象的當前顏色?     /* Changing the color via key presses     *      */    if (Input.GetKeyDown(KeyCode.R))    {        rend.material.SetColor("_Color", Color.red);    }    if (Input.GetKeyDown(KeyCode.G))    {        rend.material.SetColor("_Color", Color.green);    }    if (Input.GetKeyDown(KeyCode.B))    {        rend.material.SetColor("_Color", Color.blue);    }}// To add button elements to the visual interfacevoid OnGUI() {    // Saving    if (GUI.Button(new Rect(700, 330, 50, 30), "Save"))    {        // Saving the object's color         Color colorOfObject = new Color();        PlayerPrefs.SetFloat("rValue", colorOfObject.r);        PlayerPrefs.SetFloat("gValue", colorOfObject.g);        PlayerPrefs.SetFloat("bValue", colorOfObject.b);    }    // Loading    if (GUI.Button(new Rect(770, 330, 50, 30), "Load"))    {        Color colorOfObject = new Color(PlayerPrefs.GetFloat("rValue", 1F), PlayerPrefs.GetFloat("gValue", 1F), PlayerPrefs.GetFloat("bValue", 1F));    }
查看完整描述

2 回答

?
斯蒂芬大帝

TA貢獻1827條經驗 獲得超8個贊

你可以這樣做;


public static void SaveColor (Color color, string key) {

    PlayerPrefs.SetFloat(key + "R", color.r);

    PlayerPrefs.SetFloat(key + "G", color.g);

    PlayerPrefs.SetFloat(key + "B", color.b);

}


public static Color GetColor (string key) {

    float R = PlayerPrefs.GetFloat(key + "R");

    float G = PlayerPrefs.GetFloat(key + "G");

    float B = PlayerPrefs.GetFloat(key + "B");

    return new Color(R, G, B);

}

或者你可以將它的十六進制代碼保存為字符串并加載它


查看完整回答
反對 回復 2022-07-23
?
慕慕森

TA貢獻1856條經驗 獲得超17個贊

在Awake中,獲取對GameObject的渲染器的引用:


private Renderer rend;


void Awake() {

    rend = GetComponent<Renderer>();

}

將紅色、藍色、綠色和——如果需要的話——顏色的 alpha 通道保存為不同的浮動首選項:


// Saving

if (GUI.Button(new Rect(700, 330, 50, 30), "Save"))

{

    Color colorOfObject = rend.material.GetColor("_Color");


    PlayerPrefs.SetFloat("rValue", colorOfObject.r);

    PlayerPrefs.SetFloat("gValue", colorOfObject.g);

    PlayerPrefs.SetFloat("bValue", colorOfObject.b);

    PlayerPrefs.SetFloat("aValue", colorOfObject.a);

}

然后加載它,GetFloat相應地使用:


// Loading

if (GUI.Button(new Rect(770, 330, 50, 30), "Load"))

{

    Color defaultColor = Color.red;

    Color colorOfObject = new Color(

            PlayerPrefs.GetFloat("rValue", defaultColor.r),

            PlayerPrefs.GetFloat("gValue", defaultColor.g),

            PlayerPrefs.GetFloat("bValue", defaultColor.b),

            PlayerPrefs.GetFloat("aValue", defaultColor.a)

        );


    rend.material.SetColor("_Color", colorOfObject);

}


查看完整回答
反對 回復 2022-07-23
  • 2 回答
  • 0 關注
  • 193 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號