几乎90%的时间,我的问题在这里已经解决了。但今天是我第一次问。
我正在开发一个小型的鸟类克隆,就像编程挑战一样。我之前从未使用过C#或Unity ......
我有一个ON / OFF按钮,我希望“切换”。到目前为止,我有这个。它的工作原理除了再次显示'musicOn'纹理并再次播放音乐之外。
这里有什么问题?提前谢谢。
void OnGUI(){
toggleMusicButton();
if(GUI.Button(rect,"", new GUIStyle())){
music.Pause();
musicBool = false;
}
if(GUI.Button(rect,"", new GUIStyle())){
music.Play();
musicBool = true;
}
}
void toggleMusicButton(){
if(musicBool){
GUI.DrawTexture(rect, musicOn);
} else {
GUI.DrawTexture(rect, musicOff);
}
}
答案 0 :(得分:3)
我没时间测试,但我相信这是因为你在OnGUI之外的另一种方法中进行GUI调用。我认为OnGUI调用昂贵所以越少越好。
private Texture musicTexture;
void OnGUI(){
GUI.DrawTexture(rect, musicTexture);
if(GUI.Button(rect,"", new GUIStyle())){
if (musicBool) {
music.Pause();
musicBool = false;
musicTexture = musicOff
}
else {
music.Play();
musicBool = true;
musicTexture = musicOn
}
}
}
如果您使用DrawTexture只是为了改变按钮的外观,那么就这样做。
创建2个GUIStyles并为您的按钮设置正确的纹理
public GUIStyle musicOff; //assign a GUIStyle with the correct button image for off
private GUIStyle musicOn; //assign a GUIStyle with the correct button image for on
private GUIStyle musicGUIStyle; //holds GUIStyle being displayed. Assign this a default
void OnGUI(){
if(GUI.Button(rect,"", musicGUIStyle)){
if (musicBool) {
music.Pause();
musicBool = false;
musicGUIStyle = musicOff;
}
else {
music.Play();
musicBool = true;
musicGUIStyle = musicOn;
}
}
}