关于Hello Hell项目的经验总结
2016-04-30 21:40
573 查看
首先Hello Hell项目是博主在大学三年级期间独立开发的一款游戏,主要目的就是熟悉unity引擎以及提高对整个游戏体系的把控。
下面是项目整体的结构图
好,接下来记录一下在完成项目期间,遇到的一些问题以及解决方法。
项目UI框架的搭建。
众所周知,Unity引擎在5.0版本后,重做了自带UI系统,简称UGUI,较之以前的GUI,有了很大的突破,Ui事件的响应和建立更加容易,操作性提高不少。
但不可否认的是,NGUI仍然是大多数开发者所乐意使用的UI系统,原因可能有二:
1.人们更偏向于是用自己熟悉的工具或者插件。
2.在之前GUI不那么容易使用的时候,NGUI成功抢占了UI系统的位置,致使大部分插件制作工作室,偏向于制作适合NGUI的插件,这样就使得NGUI更加流行和便于使用。
额,似乎是有点扯远了,来来来,回正题。
以NGUI为例:
Tips1:在创建UI Root之后,我们就可以不再需要从菜单栏添加UI元素了,一切都可以在Sence面板和Inspector面板中创建或修改组件了。
child即代表创建一个sprite作为当前sprite的子层。
sibiling则是创建一个同等级的sprite。
对啦,项目中最好建一个UIManager,用来帮助场景UI中的按钮的监听。
Tips2:快速创建按钮,并附加监听事件。
第一步,添加Box Collider
第二步,添加Button Script
第三步,创建Listener 脚本(名字可以自己定啦)
第四步,在之前建立的UIManager上附加脚本
第五步,为按钮指定方法
运行点击按钮之后,就会实现按钮的监听,更值得一提的是,你项目的所有按钮,都可以用这样的方法。
Tips3:关于光线碰撞。
当你的项目中,需要与游戏中的物体交互时,大多数人都会用光线碰撞,顾名思义,就是从鼠标点击的地方投射一条射线,但是大家可能不知道,这条射线是可以穿过UI层的。也就是说,当UI按钮下有游戏物体且有碰撞体组件的时候,你在点击UI按钮的时候,点击的并不是你认为的游戏物体。
比如,博主所做的游戏中,再点击完空炮台基座的时候,是需要记录当前所点击的炮台基座,然后再点击UI按钮,实例化一个相应的炮台给炮台基座。在这个背景下,博主就遇到了这样的尴尬,实例化的东西跑到别的炮台上去了。暂时通过别的方法解决了(设置Tag,这里就不再赘述了,想了解的可以私聊)
回顾一下,光线碰撞的标准代码吧!
下面是项目整体的结构图
好,接下来记录一下在完成项目期间,遇到的一些问题以及解决方法。
项目UI框架的搭建。
众所周知,Unity引擎在5.0版本后,重做了自带UI系统,简称UGUI,较之以前的GUI,有了很大的突破,Ui事件的响应和建立更加容易,操作性提高不少。
但不可否认的是,NGUI仍然是大多数开发者所乐意使用的UI系统,原因可能有二:
1.人们更偏向于是用自己熟悉的工具或者插件。
2.在之前GUI不那么容易使用的时候,NGUI成功抢占了UI系统的位置,致使大部分插件制作工作室,偏向于制作适合NGUI的插件,这样就使得NGUI更加流行和便于使用。
额,似乎是有点扯远了,来来来,回正题。
以NGUI为例:
Tips1:在创建UI Root之后,我们就可以不再需要从菜单栏添加UI元素了,一切都可以在Sence面板和Inspector面板中创建或修改组件了。
child即代表创建一个sprite作为当前sprite的子层。
sibiling则是创建一个同等级的sprite。
对啦,项目中最好建一个UIManager,用来帮助场景UI中的按钮的监听。
Tips2:快速创建按钮,并附加监听事件。
第一步,添加Box Collider
第二步,添加Button Script
第三步,创建Listener 脚本(名字可以自己定啦)
第四步,在之前建立的UIManager上附加脚本
第五步,为按钮指定方法
运行点击按钮之后,就会实现按钮的监听,更值得一提的是,你项目的所有按钮,都可以用这样的方法。
Tips3:关于光线碰撞。
当你的项目中,需要与游戏中的物体交互时,大多数人都会用光线碰撞,顾名思义,就是从鼠标点击的地方投射一条射线,但是大家可能不知道,这条射线是可以穿过UI层的。也就是说,当UI按钮下有游戏物体且有碰撞体组件的时候,你在点击UI按钮的时候,点击的并不是你认为的游戏物体。
比如,博主所做的游戏中,再点击完空炮台基座的时候,是需要记录当前所点击的炮台基座,然后再点击UI按钮,实例化一个相应的炮台给炮台基座。在这个背景下,博主就遇到了这样的尴尬,实例化的东西跑到别的炮台上去了。暂时通过别的方法解决了(设置Tag,这里就不再赘述了,想了解的可以私聊)
回顾一下,光线碰撞的标准代码吧!
相关文章推荐
- Qt学习笔记之日记本(文本编辑器)
- 【BZOJ1834】【codevs1362】网络扩容,最大流+费用流
- 我是如何走上Android开发的道路的
- 网络编程 -java
- linux 静态库与动态库 博客汇集
- How to Get the Function Code in R
- SSH三大框架的工作原理及流程
- Java循环练习:鸡兔同笼
- April English Summary
- 安装smb服务器
- 数量自动增减--原型图
- jvm参数
- Android自定义控件---联系人列表A-Z排序
- 【附源码】搭建spring mvc +freemarker
- MongoDB学习
- 图片提示效果(jquery)
- Android入门知识要点
- 设计模式——基本概念
- Jenkins中使用POP3协议邮件配置
- 一起talk C栗子吧(第一百三十九回:C语言实例--文件操作:基于文件描述符二)