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


既然Lua这么强大,我们是否没必要自己编写脚本系统了呢?理论上说,Lua可以应付各种情况,没必要自己写一个解释器,重新造一个轮子。但这里有个脚本开发的友好性问题。使用脚本的人不一定是熟悉程序的人,因此能正确的编写Lua脚本是有一定门槛的。如果是自定义的脚本,就可以将语法设计的更具体一些,贴近自然语言,以降低使用门槛。值得强调的是,设计脚本语法并不是没有成本的,我们需要在动手之前,衡量工作量与工期。下面我以CG动画脚本为例做说明。

在游戏中制作CG过场动画通常需要策划和美术多人协助完成。对于Unity3d来说,可以找到制作CG事件的插件,但从实际推行的效果来看,学习成本并不低。对于常规的场景分镜,其实并不一定要特殊的动画效果,因此采用有限语法的脚本完全可以满足需求。在制定语法时,完全可以使用中文,降低英语门槛,防止出现拼写错误。一个简单的脚本可以是这样的:

通过上面的脚本定义方式,能够兼顾可读性与实用性。实际应用中,可能会比这个脚本的功能参数更多,例如播放声音,特效等等。但总体上讲,纯文本的内容易于修改,而简明的语法可以使得CG内容更直观。为了避免出错,我们甚至可以编写一个语法校验器,来检查是否在特定位置出现非关键字。VM方面,每行是一条命令,中括号中是参数,小括号中是参数值。在运行时,每次读入一行,并转义成对应的逻辑执行。其中需要约定一些关键值,比如摄像机的回应模式,是指两个对话的人依次出现在屏幕的中心,并且脸部朝向相对,效果可以参照新闻采访。诸如此类的定义都需要结合项目实际需求制定。

本文出自 松阳论道 转载必须注明出处

http://blog.songyang.net/5791.html

说点什么吧...

电子邮件地址不会被公开。 必填项已用*标注