我想用鼠标左键单击功能。所以基本上,我希望我的屏幕开始显示func1
(func1
已激活),然后当您按下鼠标左键func1
时取消激活并func2
被激活,然后再次按下鼠标左键func2
取消激活,func3
被激活,再次按下鼠标左键func3
取消激活,func1
被激活,这会不断循环。
bool tappedOnce = true;
bool tappedTwice = false;
bool tappedThrice = false;
void func1() {print("func1");}
void func2() {print ("func2");}
void func3() {print ("func3");}
void toggle()
{
if (Input.GetKeyDown(KeyCode.Mouse0)&& tappedOnce == false){tappedOnce = true; func1();}
if (Input.GetKeyDown(KeyCode.Mouse0)&& tappedOnce && tappedTwice == false ){func2(); tappedTwice = true;}
if (Input.GetKeyDown(KeyCode.Mouse0)&& tappedOnce && tappedTwice && tappedThrice == false){func3(); tappedOnce = false; tappedTwice = false;}
}
在这里问这个问题是因为这个问题被标记为主题 - 游戏开发堆栈交换 - 他们建议我在这里提出问题。
答案 0 :(得分:0)
当在两个以上不同的功能之间切换时,我建议使用这样的整数和switch case语句:
using UnityEngine;
using System.Collections;
public class MouseTest : MonoBehaviour {
//conditional
private int clickNumber;
//run code
void Update ()
{
toggle();
}
//methods to run
void func0() {Debug.Log ("func0");}
void func1() {Debug.Log ("func1");}
void func2() {Debug.Log ("func2");}
void func3() {Debug.Log ("func3");}
//conditional code
void toggle()
{
if(Input.GetMouseButtonDown(0))
clickNumber += 1;
switch (clickNumber)
{
case 0:
func0();
break;
case 1:
func1();
break;
case 2:
func2();
break;
case 3:
func3();
break;
default:
break;
}
//set clickNumber to 0 when greater than the number of methods
if(clickNumber > 3)
clickNumber = 0;
}
}
更改最后一个if语句的编号,以便向列表中添加更多功能。