前面学习了怎么样创建文本显示,这样就可以把程序内部一些状态告诉玩家,比如角色的生命值,经验值,金钱等等,这样做还是不够的,因为游戏是交互的,还需要获取玩家的输入,常常使用按钮来获取玩家的输入,这样就可以得到用户的输入反馈,从而达到互动的目标。比如游戏刚开始时,需要用户点击菜单开始游戏,或者退出游戏等等。又或者让用户输入自己的名称,以便这个游戏适用不同用户在同一台电脑上进行。这些按钮的实现都可以在脚本中编写OnGUI()函数来实现。
上面已经说了可以通过OnGUI()函数来写界面,那么把这个函数放到哪一个脚本里呢?其实Unity3D没有规定放到那一个脚本,即是所有继承MonoBehaviour类脚本里都可以放入这个函数,都可以绘制界面。但是,如果一个游戏里有几千个脚本,每个脚本都显示按钮,就会比较难控制,比如那些按钮显示在什么位置,或者有重复的。为了避免有太多的OnGUI()同时作用,使得图形界面的构成难以控制,一般情况之下,应该只用一个脚本里有OnGUI()函数,然后把这个脚本绑定到场景中唯一的对象上,如果没有唯一的对象,就可以自己创建一个空对象。往往是绑定在主摄像机上面,这样就可唯一化,但不要绑定到在游戏过程中可以删除的对象上面啊!这点一定要记住,否则删除之后就没有界面了。
下面就来在OnGUI()函数里实现按钮的功能,当用户按下之后,就来让计数增加一次。先给主摄像机添加脚本文件:
通过上面选中A,然后再从B里添加新脚本C。这样之后,就可以在脚本里添加下面的代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SampleButton : MonoBehaviour {
private int count;
private Rect btnRect;
// Use this for initialization
void Start ()
{
count = 0;
btnRect = new Rect();
}
// Update is called once per frame
void Update ()
{
}
//界面显示
private void OnGUI()
{
btnRect.x = Screen.width / 3;
btnRect.y = Screen.height * 2 / 5;
btnRect.width = Screen.width / 3;
btnRect.height = Screen.height / 5;
if (GUI.Button(btnRect, "深圳改革开放"))
{
print(count);
count++;
}
}
}
把代码输入到脚本里SampleButton.cs里,然后再点击运行,就看到下面的界面显示:
中间可以看到按钮在显示,当你点击之后,就会在左下面看到计数在增加。
到这里就学会了怎么样创建一个按钮显示。
更多学习在这里:https://blog.csdn.net/caimouse/article/details/51749579