视频链接:游戏开发入门(四)逻辑与脚本开发(8节课 时常:约2小时30分钟 第4节看不了)
笔记与总结(请先学习视频内容): 1.逻辑系统目的 2.逻辑系统看起来是一个技术含量没那么高的部分
但是其中涉及到的技术内容却是相当多的。逻辑系统是作为一个游戏项目里面最为复杂的系统之一,需要编写者在一开始的时候就尽可能的通过经验来构建一个比较完善扩展性强的逻辑架构,然后随后不断的 进行迭代改进。 3.逻辑系统特点:其实逻辑系统的特点是与游戏本身的特点想对应的,一款游戏需要对性能有很严格的要求,需求变更极为频繁,注重开发效率。
那么对应的逻辑系统就必须满足良好的运行性能需求,不能崩溃(没有开玩笑),有很好的拓展性,由于时间周期紧张,不太会花过多的时间考虑架构与设计模式。 4.开发游戏逻辑常用语言: - C++ Unreal引擎,Cocos引擎,大部分自研引擎
- C# Unity
- JavaScript Unity
- Lua 作为脚本语言,在各个引擎都可以使用,常用于热更新
上述的语言编译运行机制都有差异,具体的内容需要深入去学习了解。 5.脚本语言的应用目的:
简单的修改可以交给策划去实现,可以提高工作与开发效率,另外可以用于热更新。 6.什么是热更新?
热更新就是不需要重新编辑底层代码,直接通过修改脚本的方式对游戏逻辑进行修改。对于手机游戏,玩家不可能每次更新都下载
完整的一个游戏包。我们可以在进入游戏的时候,只给其更新脚本代码,来对游戏逻辑更新。这个需要你的引擎支持对应脚本的虚拟机。 7.C#简述
语法靠近C++,但是比C++好用好学
有垃圾回收机制,无需手动释放内存
是Unity官方脚本语言
在IOS平台可以通过IL2CPP转为C++代码编译执行 8.关于垃圾回收的注意:不要频繁的调用强制垃圾回收(性能开销相当大),也尽可能少分配内存、 9.C#使用注意事项: - 避免使用foreach,string拼接,装箱拆箱(C#里面的引用类型都是继承System.Object类的)
- 避免频繁的内存分配,可以提前分配一个比较大空间的内存,也可以使用内存池 可以建立对象池,减小对象内存分配释放造成的性能开销
- 尽量使用struct代替class。因为C#里面struct是在栈上分配,Class在堆中分配,需要垃圾回收处理。C++中二者没有差别
10.C#常用容器 - 数组 List ArrayList(里面成员类型可以不同)
- LinkedList(包含LinkedListNode)
- Dictionary(性能开销大)
- HashSet
- Queue
11.关于event与delegate:这个东西如果语言功底比较浅,建议先简单理解一下,我有时间详细的讲解一下(我开始也花了很长的时间去理解)。
有兴趣学习其原理的可以参考链接: 12.Unity就是以对象组件为其主要的开发模式,大部分的功能都是在组件上的,我们通过给一个对象添加不同的组件,他就拥有了不同的功能。 13.关于协程:首先建议先了解多线程。再看完视频的基础上还可以参考链接:http://dsqiu.iteye.com/blog/2029701 http://www.cnblogs.com/zhaoqingqing/p/3750522.html 14.视频中一个简单游戏系统的构建:
|