【问题标题】:How to make my buttons do different things with C# in Unity?如何让我的按钮在 Unity 中使用 C# 做不同的事情?
【发布时间】:2014-06-02 11:25:07
【问题描述】:

我目前有一些代码可以通过数组在屏幕上放置一些按钮,并在检查器中分配纹理。问题是我不知道如何让按钮 1 退出游戏,按钮 2 进入下一个级别,按钮 3 加载图像。有人可以向我解释我需要做什么才能使单个按钮在单击时执行不同的操作吗? (第二个数组是我屏幕右侧的按钮)

这就是我的代码现在的样子:

using UnityEngine;
using System.Collections;

public class UI : MonoBehaviour
{
    public Texture2D[] parts;
    public Texture2D[] extra;
        int buttonHeight, buttonWidth;
    int x, y;
    int width, height;

    void OnGUI ()
    {
        for (int i = 0; i < parts.Length; ++i) 
        {
            if (GUI.Button (new Rect (x - 35, i * (height + 97), width + 300, height + 90), parts [i]))
            Debug.Log ("Clicked button " + i);
            //if (GUI.Button (new Rect (0, i * (buttonHeight + 20), buttonWidth + 100, buttonHeight + 100), textures [i]))
       }
       for (int x = 0; x < extra.Length; ++x) 
       {
           if (GUI.Button (new Rect (x + 800, x * (height + 140), width + 300, height + 120), extra [x]))

           Debug.Log ("Clicked button " + x);
           if (extra [0] && Input.GetButtonDown ("Jump")) 
           {
               Application.CaptureScreenshot ("Screenshot.png");
               Debug.Log ("Screen captured");
           }
       }
    }
}

【问题讨论】:

    标签: c# arrays unity3d


    【解决方案1】:

    这样的事情会起作用:

    using UnityEngine;
    using System.Collections;
    
    public class UI : MonoBehaviour {
    
    public Texture2D[] parts;
    public Texture2D[] extra;
    public string[] actions;
    int buttonHeight, buttonWidth;
    int x, y;
    int width, height;
    
    void OnGUI ()
    {
        for (int i = 0; i < parts.Length; ++i) 
        {
            if (GUI.Button (new Rect (x - 35, i * (height + 97), width + 300, height + 90), parts [i]))
                Execute(actions[i]);
            //if (GUI.Button (new Rect (0, i * (buttonHeight + 20), buttonWidth + 100, buttonHeight + 100), textures [i]))
        }
        for (int x = 0; x < extra.Length; ++x) 
        {
            if (GUI.Button (new Rect (x + 800, x * (height + 140), width + 300, height + 120), extra [x]))
    
                Debug.Log ("Clicked button " + x);
            if (extra [0] && Input.GetButtonDown ("Jump")) 
            {
                Application.CaptureScreenshot ("Screenshot.png");
                Debug.Log ("Screen captured");
            }
        }
    }
    
    void Execute(string action) {
        switch (action) {
        case "exit":
            Application.Quit();
            break;
        case "next":
            // Load next level..
            Debug.Log("next");
            break;
        }
    }
    

    }

    【讨论】:

      猜你喜欢
      • 2013-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-18
      • 2016-03-17
      • 1970-01-01
      相关资源
      最近更新 更多