0

我是 Unity 和 C# 的新手,所以请多多包涵。我有几个场景,玩家可以随意移动,其中一个有我想在鼠标点击时隐藏的图像对象。现在,我已经将一个脚本添加到一个我renderer.enabled = false;用来隐藏它的图像对象中。当玩家回到那个场景时,它就不再隐藏了。这样做的正确方法是什么?

//--------已编辑部分------------ 现在可以工作了:)

public static bool showIt = true;
    void Start () {
        renderer.enabled = showIt;
        print (showIt);
    }
    void OnMouseDown (){
        showIt = false;
        renderer.enabled = showIt;
    }
4

3 回答 3

0

您可以使用 PlayerPrefs 尝试这样的事情:

    public class RenderController : MonoBehaviour {

        // Check PlayerPrefs in Awake() to see if renderer should be enabled
        void Awake(){
            if (PlayerPrefs.GetInt ("rendererOn") == 0) {
                renderer.enabled = true;
            }
            else
                renderer.enabled = false;
        }

        void OnMouseDown(){

            // If the renderer is enabled when clicked then disable renderer
            if (renderer.enabled == true) {
                renderer.enabled = false;
                PlayerPrefs.SetInt("rendererOn",1);// Set state to 1(false)in PlayerPrefs
            }

            // If the renderer is disabled when clicked then enable it
            else if(renderer.enabled == false){
                renderer.enabled = true;
                PlayerPrefs.SetInt("rendererOn",0);// Set state to 0(true)in PlayerPrefs
            }
        }  
    }

我在 Unity 中对其进行了测试,并且可以正常工作。基本上只是将渲染器组件的启用/禁用状态写入 PlayerPrefs 并且每次加载对象时都会检查最后一个状态是什么。如果您希望在游戏第一次加载时启用它,请记住将 rendererOn 全局变量设置为 0,就像我在上面所做的那样。

于 2015-02-06T22:04:34.510 回答
0

为什么不用 gameObject.SetActive(false) 而不是 renderer.enabled = false ?

于 2015-02-06T14:32:41.333 回答
0

为什么不使用静态变量来保持对象的状态?您可以使用 PlayerPrefs,但这不是最佳方法。使用静态初始化设置布尔变量以记录状态,然后使用 Start() 方法初始化变量并设置值。请记住,在您的 LoadLevel() 之前,您必须将值保存到给定的变量(或 PlayerPrefs.Set* 如果您走那条路线)。请记住,如果您坚持使用 Update() 或 OnGUI() 或 FixedUpdate(),则成本很高。

于 2015-02-07T07:37:10.310 回答