薪火相传


Unity3D 绘制曲线(四):接口扩展

做到这种程度,我们其实应该更进一步,做成更通用的功能:绘制任意算法的曲线。为了完成这个目的,我们需要将函数的参数抽象出来,作为匿名函数的参数,这样就可以应对不同的算法。在下面的代码中,我添加了一个分段函数演示,用来展示效果,编码如下: [crayon-5dcd302c43cc80 […]


Unity3D 绘制曲线(三):接口封装

目前我们成功绘制了正弦曲线,接下来要做的是封装接口,抽离出曲线算法。具体重构方式如下:

这里我们用到匿名函数的知识,将点的计算封装成匿名函数,传入到绘制方法中。函数的参数为x,返回值为对应点的位置。这样,我们就可以 […]


Unity3D 绘制曲线(二):正弦曲线

下面我们来动手写绘制正弦曲线的功能。首先创建一个名为DrawCustLine.cs的文件,在其中编写如下代码:

首先,我们将函数的相位、振幅、波长、总长,开放到Inspector中。然后绘制部分,我们为曲线绘制一条 […]


Unity3D 绘制曲线(一):基本原理

轨迹运动是游戏很重要的组成部分。通常说来轨迹可以用函数来表示。即通过一个公式y=f(x),当变量x不断增加时,能得到对应的y。在这个例子中,每经过一帧,x都增加一帧的值,再通过公式计算y的值,将物体的坐标设定到y值对应的位置。从动态的效果看来,即完成了沿轨迹移动。 […]


Unity3D 图片格式更改(三):更改文件属性

接着更改对应的属性,编写如下代码:

在上面的代码中,通过TextureImporter更改相关属性,通过SetDirty将对象标记为需要保存更改。


Unity3D 图片格式更改(二):文件导入回调

首先创建一个名为TextureChange.cs的文件,编写如下代码:

代码编辑保存后,导入新图片,或右键现有资源文件点选Reimport时会输出图片的路径。


Unity3D 图片格式更改(一):接口函数

图片导入到项目中时,默认是Texture类型。对于UI来说,想要将其应用到UGUI中,需要手动更改其类型为Sprite。这步操作本质上不需要人工干预,最优的处理方式是自动完成。同理,UI图片也不需要开启MipMap。它们应该在统一的图片处理流水线中完成。 在Unity中,Asse […]


Unity3D 脚本系统设计(三):自然语言脚本

既然Lua这么强大,我们是否没必要自己编写脚本系统了呢?理论上说,Lua可以应付各种情况,没必要自己写一个解释器,重新造一个轮子。但这里有个脚本开发的友好性问题。使用脚本的人不一定是熟悉程序的人,因此能正确的编写Lua脚本是有一定门槛的。如果是自定义的脚本,就可以将语法设计的更具 […]


Unity3D 脚本系统设计(二):Dota2角色AI参考

对于系统或UI界面没有那么复杂的竞技类游戏,脚本系统也有它存在的意义。Dota2的AI就是这样一套脚本系统,从角色选择、装备合成、技能释放等初级的操作,到分路选择、团战时机判断、角色间配合等团队型决策,都可以通过Lua脚本自由定制。例如,截至本书编写时间,在Dota2的7.x版本 […]


Unity3D 脚本系统设计(一):魔兽世界的参考

很多人知道Lua语言是从魔兽世界开始的。在魔兽世界的聊天中输入

即可运行Lua脚本,输出“Hello WoW”。通过这样的方式,玩家几乎可以通过输入命令做游戏中的任何事。于是有很多人利用这点,制作了很多外挂,来实现 […]


Unity3D 游戏同步浅析(五):帧同步

帧同步是指客户端之间只同步用户的输入指令,例如,向前走、按下哪些技能等等,不同的客户端各自计算自己的结果。由于消耗的流量只取决于指令数,因此会大大减少消息。另外由于消息结构原因,帧同步的速度要比状态同步更快,因此适用于一些高频交互的游戏。 不过由于每个客户端需要独立计算,因此需要 […]


Unity3D 游戏同步浅析(四):状态同步

这里提到的状态同步和帧同步都是广义上的。虽然它们的底层实现都可以基于上面提到的模式,但从广义上上讲,它们的同步思路不同。 状态同步指的是将其他玩家的状态行为同步的方式。例如,怪物的AI控制、角色技能释放、战斗伤害计算等。纯粹的状态同步模式下,这些内容都由服务器运算,只是将结果下发 […]


Unity3D 游戏同步浅析(三):数据模式

全网状数据模式 全网状数据模式指的是,每个客户端需要给网络中的每个设备广播自己的数据。因此每个设备上都有完整的数据,各个终端之间传递的只是控制设备的输入信息。可以预想到,随着网络中终端数量的增加,信息量会急剧增长。由于消息量大,不同客户端之间通常只会传递用户输入信息,这就需要保证 […]


Unity3D 游戏同步浅析(二):通信方式

C/S架构 从通信方式上看,同步可以分为C/S与P2P两种。C/S是Client/Server的缩写,指的是客户端与服务器连接的消息传递方式。在这种框架下,所有消息都通过服务器转发。它的优势在于可以很好地控制非法行为。服务器知道一切数据,通常也会对数据进行模拟计算,因此,作弊行为 […]