我是Unity和C#的新手,请耐心等待。我有几个场景,玩家可以随意移动,在一个场景中有鼠标点击时我想隐藏的图像对象。现在我已经在一个imageobject中添加了一个脚本,我使用renderer.enabled = false;
来隐藏它。当玩家移回该场景时,它不再被隐藏。什么是正确的方法呢?
// ------ EDITED PART ----------- 现在它有效:)
public static bool showIt = true;
void Start () {
renderer.enabled = showIt;
print (showIt);
}
void OnMouseDown (){
showIt = false;
renderer.enabled = showIt;
}
答案 0 :(得分:0)
为什么不是gameObject.SetActive(false)而不是renderer.enabled = false?
答案 1 :(得分: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,如上所述,如果您希望在游戏第一次加载时启用它。
答案 2 :(得分:0)
为什么不使用静态变量来保持对象的状态?你可以使用PlayerPrefs,但它不是最佳方法。设置布尔变量以使用静态初始化记录状态,然后使用Start()方法初始化变量并设置值。请记住,在LoadLevel()之前,必须将值保存到给定变量(如果你去那条路线,则将PlayerPrefs.Set *)。请记住,如果您坚持使用Update()或OnGUI()或FixedUpdate(),则会产生很大的成本。