2016-07-21 6 views
1

Я хочу переключиться между функциями с помощью щелчка левой кнопкой мыши. Таким образом, в основном, я хочу, чтобы мой экран начинался с отображения func1 (func1 активирован), затем, когда вы нажимаете левую кнопку мыши, func1 деактивируется, и активируется func2, а затем при нажатии левой кнопки мыши снова func2 деактивируется и func3 получает активируется, и когда вы снова нажимаете левую кнопку мыши, func3 деактивируется и func1 активируется, и это продолжается.Переключение между функциями в Unity

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

При переключении между более чем двумя различными функциональными возможностями, я рекомендую использовать целое число и переключатель дело о так:

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

} 

Изменения числа последнего, если заявление, чтобы добавить больше функций в список.

+0

По какой-то причине он не возвращается к функции 1 из функции 2. – kp21

+0

Он циклически перемещается по методам в порядке возрастания. Если вы хотите пройти назад через них, добавьте что-то вроде 'if (Input.GetMouseButtonDown (1)) {clickNumber + = -1;}' – LWKatze

+0

Я имею в виду функцию 3 * извините. Он не возвращается к функции 0 из функции 3 – kp21