已经使用Unity5.3.0发布了WebPlayer版本的游戏! **亲自体验游戏请点击这里!**需要安装Unity的WebPlayer浏览器插件
本项目是书籍《Unity 3.x游戏开发经典教程》(英文版《Unity 3.x Game Development Essentials》)的例子。
其中按照chapter做区分了,每个chapter作为单独的Unity项目,可使用Unity单独打开每个chapter文件;因为使用的Unity版本是5.3.0,所以对于3.x版本中已经过期的API使用了5.3.0的新API做替换了(其实Unity编辑器会自动检测C#脚本,如果发现使用过时API的话,会提示是否尝试自动修复,但不敢确保修复的正确性,最好先备份!)
**问题:**发现添加的GUITexture根本不能显示,即在第一人称视角摄像机中不能显示
**解决:起初也没找到原因,以为是不是Unit5版本想替换掉GUITexture等老的GUI而转去NGUI?然后各种尝试,在编辑器下面创建了画板(Canvas),并添加原画组件(RawImage)就可以显示了,于是乎把UI组件都使用Canvas+RawImage的方式重新组织了一下,并写了个UIManager控制GUI组件的显示/隐藏;但是在chapter09的时候却发现是可以显示GUITexture的,唯一不同的地方是摄像机,一个是FPSController子组件下的,一个是我们自己创建的,比较了一下发现原来是Unity5版本的FPSController下的摄像机Camera组件默认是缺少GUILayer的,从而导致不能显示GUITexture!**添加上GUILayer就可以了。
(PS:GUITexture位置的x和y值范围必须在0到1之间!且必须在Game面板才能看到,在Scene面板是看不到的)
问题:因为本章涉及到切换场景功能,所以发现从Menu主菜单场景切换到游戏IsLand场景,明显画面变黑,材质变黑了,搜索了一番,发现应是Unity5版本有天空盒光效自动渲染的过程,所以你会发现之前有天空盒的chapter中,刚进入Unity加载时画面最初也是偏黑的,过一会天空盒反射光效渲染完毕后才慢慢明亮起来
**解决:**暂时尚未解决。。。有猜想过是不是可以使用脚本写代码控制天空盒的反射光效,等到天空盒反射光效渲染完毕后才切换至IsLand场景,但控制天空盒反射光效的代码需要深入了解Unity5的支持了,或者有没有其他办法解决这个问题呢?
unity3d贴吧里也有询问的,貌似说只是在编辑器切换场景会出现该种情况,而在实际build打包出来的程序是不会有此问题,那这倒好了,最后build打包的时候再验证一下了
最终验证了!确实只是Unity编辑器的问题,真正打包后会把天空盒反射光效都考虑进去了!
红色标记是第一人称出生点,可隐隐约约看到从红色出生点到蓝色房屋有石头小径。
终于轮到发布了。。。这里由于只安装了Unity编辑器,平台支持暂未安装,所以只能先发布WebPlayer版本的,Windows单机版和Android版的之后补上。照着书籍上的设置下Project Settings
点击build按钮后选择文件夹,过一会便会生成build.html和build.unity3d文件,至于名称为什么是build前缀开头是因为选择了名字为build目录打包的。(注意在build的时候如果编译错误,则这2个文件都不会生成,注意查看console错误信息)
build.html就是正常的html文件,JQuery简直是Web JS开发必备了。。。
build构建打包完毕后可直接使用本地浏览器打开build.html
为了便于快速跑遍整个岛屿,设置FPSController的Walk Speed为10,截了跳到屋顶上的图
如果浏览器不支持则页面会提示(自己的Chrome浏览器就由于某种原因不支持,但是FireFox却可以)
除了本地浏览器直接打开外,也可放到服务器上,这里直接把生成的build.html和build.unity3d文件放到自己的GitHub上了,具体链接地址如下,大家可以亲自体验下:
《Unity 3.x Game Development Essentials》 example for Unity 5.3.0
Windows版和Android版的需要安装相应的支持,如下是下载的多平台支持的安装文件
或者直接使用Unity安装助手安装的时候选择支持的平台
有了多平台支持后,配置下Player Settings就可以build了,例如截图的是Windows平台64位的
Windows平台build完成后会生成exe执行文件
然后运行该exe文件,因为配置Player Settings时允许弹出游戏设置框,所以可看到如下设置框界面
然后直接点击Play按钮进入游戏,可看到Unity Logo加载界面和后续的游戏运行图了
自适应UI组件
在chapter06提到过遇到GUITexture不能显示的问题是由于Camera下没有GUILayer,为此特意写了个UIManager控制GUI组件的显示/隐藏,UIManager是使用基于Canvas+RawImage的方式,但多平台build打包后发现UI组件不能自适应屏幕,但是GUITexture因为是基于屏幕百分比设置的(这也是为什么填写的GUITexture位置必须在0到1之间),所以再次写了个GUIManager使用GUITexture替换掉基于Canvas+RawImage方式的UIManager
最后创建了一个GUIManager的对象应用GUImanager.cs脚本,然后把Canvas删除掉,UI组件自适应屏幕就搞定了!
去掉MySun直线光
环境一直存在2个直线光,一个是最初场景默认的,另一个是自建的MySun,但发现2个直线光在一起令整个小岛反射特别强烈,如下图
于是乎把自己的MySun去掉吧,光晕也应用在最初的直线光上,下面2幅图可见对比出来了,去掉MySun后反射光效就没那么强烈了
- 点燃火把赢得游戏后有了淡出到菜单界面,现在可以写一个点击Play按钮后从菜单界面淡入到小岛场景的动画,这也是书籍chapter10留给我们的挑战
- Unity5.3.0版本的天空就是一个默认的淡蓝色,啥都没有,之前费好大劲在网上寻找天空盒资源,才找到了现在的卡通版天空盒。。。但同时也找到了不少各种系列的天空盒,甚至有末日画风的天空盒!第一人称——末日——僵尸,正好结合起来做一个具有末日僵尸风格的“逃离小岛”游戏,这看起来是个不错的计划!!!可以从chapter12开个分支去实施这个计划!
变换下天空盒,选择了一个较灰暗的场景,然后调整下日晕,这算是日落还是日出呢?就把这个作为末日僵尸风格的“逃离小岛”的游戏雏形!
然后以此游戏雏形再新开GitHub项目开发。GitHub项目地址为survivalIsland