var button1Clicked:boolean = false
function OnGUI() {
if(Input.GetKeyDown(KeyCode.Esccape))
button1Clicked = true
if (button1Clicked)
{
// button1Clicked =false
if(GUI.Button(Rect(0,0,200,100),"退出")
Application.Quit()
}
}
理由是gui 只能同时对一个按扭的事件作出反应
在Unity开发者课程讲座“添加2D用户界面文本”中,我们的教练Ben Tristem向我们展示了如何给游戏用户界面添加文本,他也给我们展示了如何增加一个背景图像精灵。我将在本文中提及增加文本元素和代码,而如何添加背景图像将在下一篇文章中阐述。
一、添加文本元素
1、我们先选择2D场景模式,你可以点击场景标签上方的2D/3D按钮,如果它显示3D点击它,那么它会切换到2D模式。
2、点击Unity顶外框的游戏对象菜单,在打开的选择菜单中选择UI,然后会跳出一个隐藏菜单,在这里点击文本。
这时候,你会注意到在你的Unity工作空间的左边的层次结构中有一个Canvas项,你还可以看到Canvas层次结构目录下的文本元素。一个事件系统也会被列出,在这个课程中你可以忽略它。
3、点击Unity右上角的图层菜单,全选,这样做突出用户界面,使其可见。
4、在层次结构中双击Canvas,向前滚动鼠标滚轮,知道Canvas充满屏幕。接着选择结构层次中的文本元素,选择左上角的翻译工具,然后点击选中的文本元素。最后,点击翻译工具的彩色箭头,并且拖住文本元素,直到它对其于Canvas的中上部。
5、相机背景颜色默认设置为蓝色,你可以按照下图的步骤来改变颜色。
6、点击文本元素。然后,点击屏幕左上方移动工具。之后缩放,以便您可以看到重新调整大小的手柄,就像蓝点一样。点击并且拖动蓝点来重新调整文本框的大小,因此它可以占据你三分之二的底部空间。
7、修改文本颜色,样式和大小,这可以在检查标签中的文本(脚本)选项中进行。我们将增大字体的大小并将字体改为白色,这样就更加醒目。
请看下面的细节截图,它想你展示了这些特征都在那里。在文本框中键入以下文字:,世界。在你更改了这些设置后,点击播放按钮,看看是否能清楚地看到文字。
二、给你的文本添加脚本
点击左侧层次标签里的文本元素,移动你的光标到屏幕右侧的检查标签,并滚动到屏幕底部。点击添加组件按钮,并选择新脚本,一个命名对话框会d出,你可以键入脚本名字。将它命名为文本控制器,点击下方的创建和添加按钮。
为了找到脚本,点击屏幕左下角的项目标签中的资产文件夹。接下来,脚本图标就会显示,并带有一个C。双击它在MonoDevelop中打开,这就是Unity的文本编辑器。
你会马上看到启动器脚本,如下图所示。我们将会改变那个脚本,使得文本元素被公开。这将会允许脚本影响文本元素。
1、增加此代码到行2:
using UnityEngine.UI;
这将导入面名。它带来用户界面信息,并且让Unity知道有一个用户界面来交互。
2、增加此代码到7:
Public Text text;
这个代码是一个变量,可以被下方列出的方法访问。
3、增加此代码到11:
Txet.text=”Hello world”
这条代码告诉Unity你想要文本元素在屏幕上显示什么。
如果你准确键入所有的代码,那么你就不会看到任何红色的文字,并且该脚本将与下面的图片中的脚本相同。请确保你使用Tab键来缩进而不是空格键。同时,确保每一行每一个缩进都是相同的。
4、点击检查标签里的文本控制器脚本选项中的文本元素并拖到文本框中,这将文本元素中的文本与MonoDevelop中的脚本联系起来,请参阅下图:
接下来的步骤将会破坏一个指导者的挑战,不要读下去,除非你确实想这么做。
现在,我们将为脚本添加键盘交互。我们将在更新功能下做这件事。
1)添加这条代码到行16:
if (Input.GetKeyDown(KeyCode.Space)) {
2)添加这条代码到行17:
text.text = Space key pressed
3)添加这条代码到行18:
}
#if UNITY_EDITORUnityEditor.EditorApplication.isPlaying = false
//Debug.Log("编辑状态游戏退出")
#else
Application.Quit()
//Debug.Log ("游戏退出"):
#endif
虽然这种方式可以在编辑的状态下退出程序,但是它没有考虑在联网状态下如何退出。即:服务器退出后,客户机如何退出?客户机退出后,服务器如何继续正常运行?
再进一步,服务器退出后,如何将某个客户机提升为服务器,支撑余下的玩家无缝继续游戏?
希望大佬解疑。我目前的做法是服务器退出时,调用Rpc过程,将所有客户机退出。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)