我已经制作了一个静音按钮脚本(在我的菜单/暂停屏幕中),这个脚本有问题。静音/取消静音部分按照我的意愿工作,但每当我死的时候,都会改变游戏中的场景'按下菜单',静音按钮会重置为我在清醒功能中所说的内容(显然)。但是我怎样才能节省'静音按钮状态,所以当我死的时候它会停留在我死前的状态。
喜欢这样:玩游戏(取消静音,带声音) - >按暂停/骰子进入菜单屏幕 - >更改按钮(切换)以“静音”#39; (声音关闭) - >继续播放/再次播放 - >按暂停/再次死亡 - >按钮仍设置为“静音”。
这是我的脚本(抱歉,它有点乱,我是C#的新手):
public class MuteButton : MonoBehaviour
{
public Texture2D Texture1;
public Texture2D Texture2;
public Texture2D mainTexture;
public bool textureBool;
public int xAs = 290;
public int yAs = 635;
public int xSize = 130;
public int ySize = 130;
public float native_width = 1080;
public float native_height = 1920;
public GUIStyle style = null;
void Awake()
{
mainTexture = Texture1;
textureBool = true;
AudioListener.pause = false;
}
void OnGUI()
{
float rx = Screen.width / native_width;
float ry = Screen.height / native_height;
GUI.matrix = Matrix4x4.TRS (new Vector3(0, 0, 0), Quaternion.identity, new Vector3(rx, ry, 1));
//if (GUI.Button (new Rect (50,500,50,50), mainTexture))
if (GUI.Button (new Rect (xAs, yAs, xSize, ySize), mainTexture, style))
{
if (textureBool)
{
mainTexture = Texture2; //Swap to Texture2
textureBool = false;
AudioListener.pause = true;
}
else
{
mainTexture = Texture1;
textureBool = true;
AudioListener.pause = false;
}
}
}
}
答案 0 :(得分:0)
如果你想让gameObject持久化你可以使用
DontDestroyOnLoad(gameObject);
并且没有你应该做的同一个游戏对象的两个克隆
public static exist=false;
Void Awake() {
if (!exist) {
DontDestroyOnLoad(this.gameObject);
exist = true;}
else {
Destroy(this.gameObject);
}
}
一种方法是将所有选项放在类中,并将声音作为类变量并以不会破坏的方式放置
public Options option;
void Start()
{
DontDestroyOnLoad(option);
option=option.GetComponent<Options>();
textureBool=option.sound;
}
void died()
{
option.sound=textureBool;
}
一种更慢但更简单的方法是像这样使用的pleyerPrefs
void Start()
{
textureBool=Convert.ToBoolean(PlayerPrefs.GetInt("sound")) ;
}
void died()
{
PlayerPrefs.SetInt("sound",Convert.ToInt32(textureBool));
PlayerPrefs.Save();
}