C3引擎游戏框架脚本

来自C3..
跳转至: 导航, 搜索

目录

框架基础对象

LuaClass脚本基类

	LuaClass = {};
	function LuaClass.new(self, o)
		o = o or {};
		setmetatable(o, self);
		self.__index = self;
		return o;
	end


CFramework 框架类

  • 是一个单例类,导出框架基础接口;

CScene 场景基类

  • 导出场景相关接口,通过CFramework:EnterScene("场景名")加载场景,通过CFramework:GetCurScene()获取当前场景对象.
  • 派生方法:
    • 1.CScene:new(); 例:CBaseScene = CScene:new(); C3DScene = CBaseScene:new();
    • 2.DeclareScene(name, parent); 例:C3DScene = DeclareScene("C3DScene", CBaseScene);
    • 第一种方式工具不可见,第二种方式工具可见可通过工具关联场景和脚本类。

CEntity 实体基类

  • 实体类是3D场景基础[节点类],3D对象的功能都是以[组件类]的方式挂在实体类上的。
  • 基础组件:
    • Entity组件:接口直接注册在CEntity对象上
    • 物理组件:接口注册在CEntity的mCompPhyx变量上
    • 声音组件:接口注册在CEntity的mCompMusic变量上
    • UI组件:接口注册在CEntity的mCompUI变量上
  • 派生方法:
    • 1.CEntity:new(); 例:CBasePart = CEntity:new(); CRolePart = CBasePart:new();
    • 2.DeclareEntity(name, parent); 例:CBasePart = DeclareEntity("CBasePart"); CRoleView = DeclareEntity("CRoleView", CBaseRole);
    • 第一种方式工具不可见,第二种方式工具可见可通过工具关联节点和脚本类。

框架配置说明

  • 配置文件[ini/app_config.ini],例:
<App>
	<Project enter_file="scene/project.c3w" />
	<UISystem enter_file="c3ui/UIEnter_ForApp.xml">
		<MsgBox dialog_style="msgbox_dialog" title_style="msgbox_title" button_style="msgbox_button" />
	</UISystem>
	<ScriptSystem root_path="/script" enter_file="AppEnter.lua" />
</App>
  • 该文件配置各个系统的加载基础信息以及入口文件等。
  <Project enter_file="scene/project.c3w" /> 工程文件,是场景文件的组织文件,其中配置着各个场景的文件路径等信息。
  <UISystem></UISystem> UI系统的配置文件
  <ScriptSystem root_path="/script" enter_file="AppEnter.lua" /> 脚本的根目录以及入口文件的配置。App启动时会根据配置加载入口脚本文件以驱动脚本。

基本脚本开发流程

  • 1.用DeclareScene派生一个场景类然后实现场景的回调接口功能。
  • 2.在工具中新建一个场景关联到上面创建的场景类。
  • 3.通过调用EnterScene加载场景,可重写CFramework:OnAppStart()来捕获App启动并调用加载场景
  • 4.在场景类的OnStart可以实现相应的Entity创建和加载

脚本接口说明

  • 参数说明:
    • 返回值和参数标识,以下所有函数相关说明都默认用这些标识
    • [s字符串] [f浮点数] [n整型] [b布尔值] [m矩阵] [t表] [o对象]
    • 标识只用于函数说明与正常Lua函数调用存在区别
    • [回调接口] 即实现在脚本触发该接口时回调用脚本的响应实现接口
个人工具