- 1、本文档共8页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第6周
同时学生Copy “Factory_Start”工程文件到各自的机器上
启动Factory_Start,讲GUI
1)先用Plane加背景图的方式,调整相机位置及旋转度,并将相机从透视方式改成正焦相机方式(Inspector-Projection(Orthographic ),再改变Plane大小到全屏,
但是发现无法做屏幕大小自适应;
2)于是选用GUITexture加背景图的方式(选中图片点击Create GUITexture可以,或者先Create GUITexture,再将背景图片拖过去也可以),但是还是没有自适应屏幕大小,这时选中刚创建的GUITexture,在Inspector面板中,设置参数如下图
如果Position的x,y也设置成0,0后,看看会是什么效果?
手动调节Game窗口大小,看看背景图是否自适应屏幕大小
调节背景图片的颜色亮度
3)创建GUISkin,并使用自定义类型(Custom Style)
在Asset-》GameAsset-》Game_UI中查看Button图片
先设置GUISkin的Custom Style参数中设置成3个按钮数组,并设置完三组按钮
这时点击运行还不会出现3个按钮,因为他们还是游戏资源,而不是游戏对象
Unity在这种情况下,一般不直接将游戏资源拖过去成为游戏对象,而是使用脚本进行控制,实时渲染在Game窗口中,而在Scene窗口中都没有内容。
4)创建C#脚本,menu.cs,实现按钮的显示
(1)脚本中先实例化GUISkin public GUISkin MyGUISkin;
(2)定义3个按钮
Rect startRect;
Rect settingRect;
Rect exitRect;
在start()中设置按钮的宽度及高度,也就是对应贴图文件的高和宽
startRect.width = MyGUISkin.GetStyle(start_btn).normal.background.width;
(3)在OnGUI()中生成按钮,并且设置大小和位置(顺势讲GUI.Button()的用法)
if(GUI.Button(new Rect (0f,VirtualScreenHeight*0.45f, startRect.width+150f ,startRect.height+20f),,start_btn))
OnGUI()函数前需要加一行 GUI.skin = MyGUISkin;否则if语句会报错,找不到“start_btn”
5、上述方案只能解决按钮上下位置的自适应问题,不能解决按钮宽度及按钮贴图大小的自适应问题,于是提出了函数ApplyVirtualScreen ();解释Matrix4x4变换矩阵。
计算按钮的位置,这之前需要新增一个自定义的函数ApplyVirtualScreen(),用于实现屏幕自适应功能
float VirtualScreenWidth = 1024;
float VirtualScreenHeight = 768;
void ApplyVirtualScreen()
{
//屏幕自适应
GUI.matrix = Matrix4x4.Scale( new Vector3( Screen.width / VirtualScreenWidth, Screen.height / VirtualScreenHeight, 1 ) );
}
设置ApplyVirtualScreen ()函数,通过缩放屏幕尺寸、大小,显示可以完成屏幕自适应问题,并使第一组按钮能够显示
6、至此,做完一个按钮。
7、再做其他两个按钮,退出和设置按钮,同时,调节窗口大小,使各个按钮的位置合适。
本周课程结束
第7周
上面只是显示按钮,接下来需要做按钮点击后的触发。
if(GUI.Button(new Rect (0f,Screen.height*0.45f, startRect.width+150f ,startRect.height+20f),,start_btn))
{
Debug.Log(开始按钮被按下,当前屏幕宽度+Screen.width+;当前屏幕高度+Screen.height);
}
if(GUI.Button(new Rect (0f,Screen.height*0.65f,
settingRect.width+150f ,settingRect.height+20f)
文档评论(0)