Unity学习笔记5:2D坦克大战

之前看了很长一段时间的视频,但是基本没有手动操作过,究竟沉淀了多少还真难说得清楚。

所以直接看实例视频跟着做了。

视频地址:http://www.sikiedu.com/my/course/90

unity中文用户文档

下面的内容多是心得或者一些坑的记录,带有大量私货,可能存在很多认识性的错误和局限性。

=================================================================================

.unitypackage unity资源包

    双击即可打开,然后点导入,就能解压到Assets目录下了。

    也可以直接拖到Project面板

资源包里面的内容包括音频、字体、图片,这些都是原来格式,即其他地方也是能够直接使用的通用格式。

=================================================================================

meta文件:

    资源导入后,会给每个资源文件生成meta文件。meta文件记录了一个id,其他地方引用的时候都是用这个ID的。一般情况下这个id是不应该被修改到的,所以提交svn的时候要注意查看。太古1初期的时候,因为很多人提交,导致id经常被修改,经常出现资源丢失的情况,应该就是这个原因了。

    meta文件除了记录id还记录了很多其他属性。理论上原本的资源文件加伤对应的meta文件才是一个整体,如果复制到其他路径或者项目,是可以直接使用的。

    meta本质上是一个文本文件,场景、预制件、动画、控制器、材质等,本质上也都是文本文件。用notepad++就能打开并查看里面的内容。这意味这只要有耐心,是可以读懂里面的每一个细节的。只是大多数属性并没有立刻弄清楚的必要。本质上这些都是配置文件。

    这点对服务端的人来说很重要,刚接触Unity的时候,碰到了一大堆新的知识点,看似毫无关联、散乱,本质上它们都是一堆配置,是一些基础的配置的变体。unity只是根据这些配置做了不同的处理,不同的表现。这个隐藏于背后的程序可能就是unity这个框架的内核。估计要非常非常深入才能接触到,甚至大部分程序员都没接触到就转管理岗或者转行了。

    所以习惯服务端的思维的人一开始接触untiy的时候,应该把自己从程序员的身份抽离出来,尝试去代入策划的角色,自己就是去配置一点东西。或者更加容易代入进去,而不会处处产生一种格格不入的感觉。

(嗯。。。对陌生领域的学习,被打断了很难再聚集起来。经常会想着自己想到哪里了。刚刚的思路被打断了,我甚至不知道之前想到什么了。看服务端代码的话,基本上不会这样。思路被打断了,只能想到什么继续写下来了。)

音频,图片(视频本质上就是一连窜的图片)这种通用的东西,感觉上不能完全看作配置,已经算是非常边界的东西了。跟其他领域交接,并沉淀的产物,或者说根本就是其他领域的东西在计算机领域的实现了。刚刚说到的文本类的文件,是封装后的产物。

=================================================================================

C#脚本

    双击就能打开,结果直接出现在服务端的VS里面了,然后发现无法识别引入的类。原来只能独立打开根目录下的.sln文件。

    双击打开后提示我的.net framework版本太低。跟着提示去下载,安装的时候又提示已经安装更高的版本。这个问题不知道其他人是否会碰到,可能是因为我的win7升到win10,然后又被我升了VS版本,期间各种卸载删除.net framework。导致有些细微的地方已经傻了。最后下载了个对应版本的开发版.net framework。终于成功打开VS的工程,并发现可以识别视频中的代码了。

C#调试

设了断点,发现原来是不能自动触发的。找了网上的解决方案:

vs更新下载速度慢,可以用一下方式尝试:

修改hosts文件
1.地址:默认安装在 C:\windows\system32\drivers\etc
2.用记事本或者其他编辑工具打开hosts,在最后一行加上

110.53.72.104 download.visualstudio.microsoft.com

3.然后运行cmd,执行以下命令,刷新dns

ipconfig /flushdns
  • 由于上面的地址可能会失效,所有搞完了记得还原回去。否则时间长了自己也会忘记。

4.重新再进行安装,更新或者更改

这个方法,我也不知道有没有效,之前是卡70%,用了这个方法后卡90%。最后我还是只能回家等偶尔1k的速度。第二天来了就装完了。

要注意安装过程中好像是无法退出的,点击删除是整个开发模块都被删掉。所以还是建议下班前搞搞,然后回家等自动完成就好了。

安装完之后,在unity菜单Edit-Preferences-External Tool-Extend Script Editor。下拉的时候可以看到有VS选项了。

再在VS上面点调试-附加Unity调试程序,找到附加程序就行了

运行游戏,断点成功

=================================================================================

Input :

unity键盘鼠标输入都在Input可以找到,这里有很详细的描述了,初学只要记得Input类,用到的时候百度应该就可以了:Unity键位输入及Input类

各种查找,都没有人关心为何WSAD键可以当做方向键使用,可能我没搜索正确,更大的可能是大家都默认是这样,没什么不妥。

看到最后的视频的时候提到 Edit-Project Setting-Input,原来在这里。

这么隐蔽,初学者好像很难找到对应的关键词并作出搜索。

=================================================================================

C#的值类型和引用类型 传送门
C#的类和结构还是非常不同的,这点跟C++差别很大,写代码的时候要注意。

=================================================================================

对场景上的对象加部件,改属性是不会对预制件产生变化的,所以有改动的时候可以点Apply All

只有修改了才限时Revert All(还原修改)和Apply All

另外要注意,运行游戏的时候,Prefab这一行是直接找不到的。而且修改过的东西,在关掉游戏之后,全部还原,所以要小心白干了。

​​​​​​​=================================================================================

碰撞:

需要加上碰撞盒子(box collider)以及刚体(Rigidbody

只有带有碰撞器的实体才能碰撞,勾选了IsTrigger则成为触发器,是没有质量的

这个在我们游戏中是很少用到,可以在碰到的时候再去详细学习。

Update()函数是每帧一次,

FixedUpdate()是固定时间执行的,对于碰撞,要固定时间执行

碰到子弹可以打坦克,但是跟墙这些东西无法触发碰撞;坦克可以跟墙触发碰撞的情况。

最后发现,需要碰撞双方要有一个是刚体,看视频好像只加了坦克的刚体,可能看漏了,发现会掉下去。最后发现可以通过设置重力比例才去除重力。

碰到问题的时候有时候知道是某个部件的事情,但是就是百度不出来,可能是因为太简单了,看一下这个部件的属性,百度翻译一下可能自己就能解决了。

​​​​​​​=================================================================================

欧拉角和四元素角

这个东西在现在的MMORPG游戏里面,一般只有做战斗的人才会接触一下,其他人基本用不到。不过也是要知道一下的,看一遍就行了。

万向节死锁

5种旋转方式​​​​​​​

四元素和欧拉角

​​​​​​​=================================================================================

父物体和子物体的层级关系(是叫层级么?)

把护盾拉到坦克实体下面的时候,可能一开始不知道搞错哪里了,直接让出生的护盾覆盖在坦克上面,而且好像无法消失。后来删掉,重新拉一次护盾就没问题了。

如果要修改层级可以改Order in Layer的数值,数值越大,层级越高

​​​​​​​=================================================================================

总结:

这个实例教程,代码不算高效,不过内容是针对性优化过,确实非常通俗易懂。

脚本里面很多用到其他预制体或者资源关联的地方,多数是C#脚本加个属性,然后在Unity里面直接拉过来关联,感觉这样很乱,缺乏集中管理。不知道是为了简化新手的学习难度,还是约定俗成的规则。

预制件应该是非常重要的内容,客户端应该已经做好了大量的UI预制件。拼界面很多时候都是有现成的东西。

从坦克大战,再对照我们的游戏,MMORPG存在非常大量的属性系统功能,基本上都是UI功能。经常听客户端说做了几年,一直在拼界面,应该不是夸张的说法。

跟战斗直接相关都是已经做好的内容,各种玩法多数也是服务端去实现规则,然后客户端只是一个副本界面,进去后也只是一个数据面板。确实存在很大差异。

或许客户端的东西不是太简单,而是难的东西都集中在个别系统内,解决了这个就解决了大部分问题,剩下的都是堆功能的人了。

从这个角度考虑的话,欧拉角、碰撞这些初学的时候知道一下就好了,是不需要深究的。

应该把精力放在UI相关的内容上面去。

另外UI的内容是放在画布上,跟场景的内容是独立性非常高的两大块。目前应该找写UI操作比较多的实例来进行学习。

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值