120 Hazel游戏引擎将C#脚本融入ECS( 二 )


在运行场景的函数,循环遍历当前所有具有脚本组件的实体
void Scene::OnUpdateRuntime(Timestep ts){// 脚本{ScriptEngine::OnRuntimeStart(this);// 实例化实体中的C#脚本auto view = m_Registry.view>();for (auto e : view) {Entity entity = { e, this };ScriptEngine::OnUpdateEntity(entity, ts);}}
根据UUID在运行脚本map找到这个封装的mono类对象,并调用C#类的函数
void Hazel::ScriptEngine::OnUpdateEntity(Entity entity, Timestep ts){UUID entityUUID = entity.GetUUID();// 得到这个实体的UUIDHZ_CORE_ASSERT(s_Data->EntityInstances.find(entityUUID) != s_Data->EntityInstances.end());// 根据UUID获取到ScriptInstance的指针Ref> instance = s_Data->EntityInstances[entityUUID];instance->InvokeOnUpdate((float)ts);// 调用C#的OnUpdate函数}
其它要写的代码(省略)效果
遇到的BUG