我目前有一些代码可以通过数组在屏幕上放置一些按钮,然后在检查器中分配纹理。问题是我不知道如何让按钮 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");
}
}
}
}
最佳答案
像这样的东西会起作用:
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;
}
}
关于c# - 如何让我的按钮在 Unity 中使用 C# 做不同的事情?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23993401/