CryENGINE3初探Entities (一)----使用Lua创建一个自定义Entity并为其添加节点

来源:互联网 发布:国联证券软件下载 编辑:程序博客网 时间:2024/06/10 18:59

     终于要开始进入第三章了,第三章的主体内容是CE3的游戏物体系统。今天我们先不管那么多,我们直接动手创建两个小例子,来一起学习一下,如何使用Lua脚本来创建一个自定义的Entity并为其添加节点,与其他Entity交互。

整个游戏过程中,LuaEntity的创建与运行主要是通过两个文件来实现,一个是定义文件.ent,一个是脚本文件.lua,两个文件存放的路径分别是:GameSDK/Entities/MyLuaEntity.ent和Scripts/Entities/Others/MyLuaEntity.lua

     这里一定要注意:路径一定要正确!!!否则你将花费大量的时间来做无用功!好了,现在开始创建:

(一)创建Entity

1.      创建定义文件MyLuaEntity.ent

文件内容如下:(推荐大家使用Notepad++编辑)       

<Entity  Name="MyLuaEntity"  Script="Scripts/Entities/Others/MyLuaEntity.lua"/>

      定义文件的作用是告诉引擎,有这么一个Entity,在这里主要定义了Entity的脚本文件位置。做完这一步,就可以打开CE3来看看效果。

      首先系统会输出错误      

      我们在others里面发现了MyLuaEntity,拖放一个Entity进入场景,它没有任何特性(Property)。      


          我们成功找到了MyLuaEntity,但是他没有任何的特性。接下来,这些特性就要靠.lua文件来编辑了。

       2.创建脚本文件MyLuaEnity.lua

在对应目录创建.lua文件后,就可以编辑了(这里推荐大家使用LusStudio)。输入如下代码:      

MyLuaEntity={  Properties=  {    myProperty="",  },}

       保存,并打开CE3查看       

    在FG中添加节点测试:

    接下来我们来为它添加节点,给他添加功能

  3. 为LuaEntity添加节点

    扩充.lua文件,最终文件如下: 

----------------------------------------------------------------------------------个人总结:一个完整的Lua脚本共三部分----------------------------------------------------------------------------第一部分:特性部分--------------------------------------------------------------------------MyLuaEntity={  Properties=  {    myProperty="",  },}----------------------------------------------------------------------------第二部分:函数部分--------------------------------------------------------------------------function MyLuaEntity:Event_OnBooleanPort()BroadcastEvent(self,"MyBooleanOutput");end----------------------------------------------------------------------------第三部分:节点部分--------------------------------------------------------------------------MyLuaEntity.FlowEvents={  Inputs=  {    MyBooleanPort={MyLuaEntity.Event_OnBooleanPort,"bool"},Vec3Test="Vec3",  },  Outputs=  {    MyBooleanOutput="bool",  },}

    打开CE3,查看效果

(二)总结一下

        好了,目前为止,我们已经可以使用Lua创建一个自定义的Entity,并可以随意为它添加节点,扩展它的功能了。这样下来,我们可以直接解压GameSDK下Scripts.pak文件解压,惊讶的发现基本上引擎里所有的entity都是用lua来创建的,而且你也会发现,他和我总结的lua文件的那三部分也是统一的,这样我们就可以学习引擎默认给我们提供的Entity代码。

        

        


       好了,今天就只能更新到这里了,我最近各种考试,手里的比赛项目也要截止了,所以以后应该是在半个月内更新的要比较慢了,希望大家谅解。

      下次我们更新的内容是:使用C++实现上述过程,关于Entity这一章节的重要概念和描述,我会在下下次和大家一同分享!

最后,还是那句话,如果大家有疑问,欢迎大家提出来,我们一起等大牛来帮我们解决。转载请注明来源,谢谢。

0 0
原创粉丝点击