Unity 中的功能之间切换

问题描述 投票:0回答:1

我想通过单击鼠标左键在功能之间切换。所以基本上,我希望我的屏幕开始显示

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;}

    }

在这里问这个问题是因为这个问题被标记为脱离主题 - 游戏开发堆栈交换 - 他们建议我在这里问这个问题。

c# unity-game-engine
1个回答
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 语句的编号以向列表中添加更多函数。

© www.soinside.com 2019 - 2024. All rights reserved.