您的位置:首页 > 其它

关于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,这里就不再赘述了,想了解的可以私聊)



回顾一下,光线碰撞的标准代码吧!

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: