继续昨天的文章,在开始今天的文章以前我们来回顾下上一篇文章中的内容:

1、所有的Unity3D脚本都继承自MonoBehaviour

2、Start()方法是脚本的初始化方法,Update()方法是用于更新逻辑,由系统每隔一段时间自已调用

3、OnGUI()方法用于绘制界面GUI,所有界面相关的工作都要在这里完成

4、GUI.Button()方法用于设置一个按钮,当返回值为True时表示按钮按下

5、GUI.Lable()方法用于设置一个标签

6、transform为当前脚本所绑定对象的变换模型

7、transform.Rotate()方法用于设置模型旋转

8、transform.Translate()方法用于设置模型平移

9、Time.deltaTime该值为只读属性,表示完成最后一帧的时间,单位为秒

10、 Vector3表示一个三维向量,用于描述模型在空间中的位置、平移量、旋转量

11、Rect表示一个矩形类,用于描述GUI控件绘制的位置和大小

好,现在我们来开始今天的内容,今天的内容是GUI。今天我们的界面采取的是在OnGUI()方法中绘制的方法,所以游戏场景中只有一个Camera,下面我们来一起看脚本文件:

using UnityEngine;
using System.Collections;public class GUIScripts : MonoBehaviour {public Texture mTexture;public  string Description;private int ScreenWidth;private int ScreenHeight;private float SliderValue=0;private Vector2 ScrollPosition;private Rect mWindow;void Start () {//Get ScreenWidth and ScreenHeightScreenWidth=Screen.width;ScreenHeight=Screen.height;//Init ScrollView PositionScrollPosition[0]=50;ScrollPosition[1]=50;//Init WindowmWindow=new Rect(350,200,550,300);}void Update () {}void OnGUI(){GUI.Label(new Rect(100,10,200,30),Description);GUI.Label(new Rect(100,40,200,30),"Screen:"+"Width="+ScreenWidth+","+"Height="+ScreenHeight);//When Button Pressif(GUI.Button(new Rect(100,70,100,30),"Button")){Description="You have pressed the Button";GUI.backgroundColor=Color.red;}//Create SliderSliderValue=GUI.HorizontalSlider(new Rect(100,120,200,50),SliderValue,0,100);GUI.Label(new Rect(100,150,200,30),"Progress is:"+SliderValue);//Create ScrollView ScrollPosition=GUI.BeginScrollView(new Rect(100,200,200,400),ScrollPosition,new Rect(0,0,ScreenWidth,ScreenHeight),true,true);GUI.Label(new Rect(0,0,mTexture.width,mTexture.height),mTexture);GUI.EndScrollView();//Create WindowGUI.Window(0,mWindow,InitWindow,"Window");}void InitWindow(int ID){GUI.Label(new Rect(20,20,200,30),"This is a label in Window");}
}

在这个类中,我们定义了两个公有的字段mTexture和Description,在Unity3D中,所有脚本中的公有字段可以像属性一样直接在游戏编辑器中进行设置:

在Start()方法中我们获取了屏幕的高度和宽度、初始化了一个ScrollView的参数数组和一个窗口Window;而在OnGUI()方法中我们绘制了两个标签,其中一个标签显示了我们设置的Description字段,一个标签则显示了我们在Start()方法中获得的屏幕宽度和高度。具体我们来看下面的截图:

现在当我们点击按钮的时候,第一个标签的文本内容会变成You have pressed the Button,当我们滑动滑块,下面会显示滑块对应的值。在下面的ScroolView中我们绘制了一张贴图,并通过水平、垂直滚动条来实现贴图的滚动显示,该贴图来自于我们的mTexture字段来指定,而右边则是一个Window,显示了我们设置的文本内容。其中GUI.Window()方法的第一个参数是窗体的ID、第二个参数是显示窗体的矩形,第三个参数是初始化窗体的方法,第四个参数是窗体的名字。

这就是我今天要为大家分享的内容,当然这只是GUI控件的部分内容,剩下的部分大家可以参照这个例子来自己学习。如果大家经常做Android或者WPF的界面的话,一定知道,在界面设计中,通常有两种类型的控件,一种是内容控件,比如我们今天提到的这些,还有一种是布局控件,通过布局控件我们可以更好的布局界面,这个内容我们放在后面来讲,希望大家继续关注我的博客,好了,今天的内容就是这样了,谢谢大家!

Unity3D游戏开发之GUI相关推荐

  1. Unity3D游戏开发之GUI的使用

    GUI是图形用户界面(Graphical User Interface)的缩写和简称,又叫图形用户接口.听起来好像很专业的感觉,其实我们每天都在接触.比如浏览器上面的前进.后退.收藏按钮.地址栏.右键 ...

  2. [转]unity3D游戏开发之GUI

    转自:http://blog.csdn.net/kuloveyouwei/article/details/23598171 GUI在游戏的开发中占有重要的地位,游戏的GUI是否友好,使用是否方便,很大 ...

  3. [整理]Unity3D游戏开发之Lua

    原文1:[Unity3D]Unity3D游戏开发之Lua与游戏的不解之缘(上) 各位朋友,大家好,我是秦元培,欢迎大家关注我的博客,我地博客地址是blog.csdn.net/qinyuanpei.如果 ...

  4. Unity3D游戏开发之Unity3D中的动态阴影

    http://blog.csdn.net/qinyuanpei/article/details/32355267 博主今天想和大家分享的是Unity3D中的动态阴影,昨天博主重温了一下自己喜欢的游戏& ...

  5. Unity3D游戏开发之在uGUI中使用不规则精灵制作按钮

      各位朋友大家好,欢迎关注我的博客,我的博客地址是http://www.qinyuanpei.com.最近因为受到工作上业务因素影响,所以博主在Unity引擎上的研究有所停滞.虽然目前的工作内容和U ...

  6. [Unity3D]Unity3D游戏开发之Xml解析实现NPC对话系统

    各位朋友,大家好,我是秦元培,欢迎大家关注我的博客,我的博客地址是blog.csdn.net/qinyuanpei.今天我们来说说Unity3D中Xml的解析,为什么要说Xml的解析呢?因为在项目中我 ...

  7. [Unity3D]Unity3D游戏开发之ACT游戏三连击效果实现综述

    各位朋友,大家好,我是秦元培,欢迎大家关注我的博客,我的博客地址是blog.csdn.net/qinyuanpei.在研究了Unity3D Mecanim动画系统的重定向特性后,今天我们继续来探索Me ...

  8. [Unity3D]Unity3D游戏开发之Unity与Android交互调用研究

    各位朋友,大家好,我是秦元培,欢迎大家关注我的博客,我的博客地址是blog.csdn.net/qinyuanpei.在前一篇文章中,我们研究了Android平台上Unity3D的手势操作并在之前的基础 ...

  9. [Unity3D]Unity3D游戏开发之MatchTarget实现角色攀爬效果

    大家好,我是秦元培,欢迎大家关注我的博客,我的博客地址是blog.csdn.net/qinyuanpei.今天我们来一起学习在Unity3D中如何实现角色攀爬效果. 在RPG游戏中,某些游戏场景常常需 ...

最新文章

  1. 优先深度搜索判断曲线相交_程序员必知的十大基础实用算法之-DFS(深度优先搜索)...
  2. 一个有趣的算法问题:如何定义一个分数类
  3. boost::multiprecision模块gmp相关的测试程序
  4. python selenium 处理弹窗_python+selenium 抓取弹出对话框信息
  5. mysql执行计划中的temp_MYSQL语句调优:GROUP BY ORDER BY语句中出现USING TEMPATORY
  6. [转]WebService 之 WSDL文件 讲解
  7. 1-4 多文档界面处理(2)
  8. NET 自定义配置文件 Configuration
  9. 一文看尽Facebook 3D视觉技术研究进展
  10. 2021-09-02AUC
  11. 电影院售票系统html页面,电影院网上订票系统(全套).doc
  12. 101页海康威视-可视化智慧城管系统建设方案(附下载)
  13. [笔记]PLC可程式模拟器-2
  14. 二分专项训练(二分搜索+二分答案的十贰道例题及解析
  15. 2021-2027全球与中国巡航型摩托车市场现状及未来发展趋势
  16. matlab中m_map工具箱绘制大圆航线
  17. RocketMQ之消息重试。
  18. 小学生机器人编程是学的什么
  19. 对计算机基础的期末总结,计算机期末总结
  20. java使用es查询地理位置信息

热门文章

  1. 网络攻防实验(五)——201521460003王浩洋
  2. mysql数据库优化总结 有图 有用
  3. 如何确保使用jdk8编译后的class能够在jdk7上运行?
  4. 打造SpringBootTemplate(SpringBoot项目的模版)
  5. web-ylbtech(合同管理)-数据库设计
  6. 我与小娜(04):时空变换,亦真亦幻
  7. 数据库热备份 Xtrabackup安装及使用
  8. Spark1.0新特性--Spark SQL
  9. Win7下使用VFW库连接摄像头
  10. 网络工程师应该掌握的知识要点