我正在参加掘金社区游戏创意投稿大赛个人赛,详情请看:游戏创意投稿大赛
以白鹭引擎为例探讨游戏画面与游戏脚本的绑定方式
前文
本文内容主要为对于游戏开发中游戏的展示画面与逻辑脚本绑定关系的讨论,而本文章的载体主要是游戏开发引擎白鹭引擎。前后端分离是目前的一种常用方式,而在纯粹的前端领域,随着react、vue等框架的使用,也趋于模版层与逻辑层分离的开发方式。回到游戏开发的角度,由于引擎的存在,基本上都是以画面与游戏逻辑脚本的分离来完成的。本文主要通过白鹭引擎进行一下这方面的探讨。
画面脚本分离方式
在白鹭引擎中,主要是利用皮肤文件作为游戏画面的展示者,再利用ts脚本文件作为游戏逻辑的开发者。两者通过一定的绑定关系,实现逻辑层脚本对于展示层元素的逻辑控制,二者组合在一起形成一个完整的游戏运行逻辑。当然,几乎任何的游戏引擎都支持通过在逻辑层利用代码完成对于页面元素的添加,这部分内容本文先不进行讨论。
在开发游戏中,按照常规的逻辑,可能首先会进行页面的搭建,在白鹭引擎exml文件中拉动我们所需的元素,将其放置在目标的位置中。这部分组件拉动后会有若干可选择的属性,利用这些属性我们可以对于需要的位置、大小、旋转、方向等内容进行设置,也就完成了对于页面对应元素展示方式的设置。简单看一个图片属性的内容:
当点击一个图片元素时,会看到右侧出现的属性,常用属性及全部属性。其中多数内容为对于页面展示的控制,此处不进行详细的赘述。可以看到其中有一个内容为id,而这就是元素绑定的核心内容。当我们设置好一个皮肤后,会设置若干个不同的id在这个皮肤组件中。如图所示,设置了若干个需要展示的皮肤元素:
而这些元素如何工作呢?这就到了ts脚本的内容。
如上图,我们在程序内根据元素类型指定好前面所设置的id,并对类型进行对应的制定。然后通过
this.skinName = "resource/eui_skins/login.exml";进行皮肤元素的指定,即可实现画面内容与脚本内容关联对应。也就可以在脚本内进行游戏逻辑的开发,最终会呈现在画面上。
其实不止白鹭引擎,其他游戏引擎也是同样。以unity为例,在场景中搭建好元素后,需要拉动c#脚本到场景中的指定位置进行绑定,并对脚本中以提前设置好的元素内容,拖动游戏场景的组件使之实现关联。最后在c#脚本中进行游戏逻辑的实际开发。
后记
- 千古兴亡多少事?悠悠。不尽长江滚滚流。