在 Unity 中的功能之间切换
Toggle between function in Unity
我想通过单击鼠标左键在功能之间切换。所以基本上,我希望我的屏幕开始显示 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;}
}
在这里提问是因为这个问题在游戏开发堆栈交换上被标记为题外话,他们建议我在这里提问。
当在两个以上的不同功能之间切换时,我建议使用整数和 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 语句的编号以将更多函数添加到列表中。
我想通过单击鼠标左键在功能之间切换。所以基本上,我希望我的屏幕开始显示 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;}
}
在这里提问是因为这个问题在游戏开发堆栈交换上被标记为题外话,他们建议我在这里提问。
当在两个以上的不同功能之间切换时,我建议使用整数和 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 语句的编号以将更多函数添加到列表中。