logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

C++反射

在游戏引擎中,很多常用的功能需要用到反射系统。例如在Unity的Inspector面板中,可以直观地看到每个Component的属性,并且在编辑器中实时修改;又比如在保存和加载游戏场景时,需要用到对游戏对象的序列化与反序列化。保存时,通过反射将各组件的属性转化成文本数据存储到json,yml或toml等文件中;加载时,解析文本文件并由反射系统创建游戏物体。)是程序在运行时检查和修改自身结构和行为的

文章图片
#c++
C++中嵌入C#作脚本引擎(二)

文章探讨了在C++引擎中嵌入C#作为脚本引擎的实现方案。采用双Mono Domain架构,分别维护编辑和运行状态,通过序列化实现数据同步,更接近Unity的灵活控制方式。文章详细介绍了包含ScriptDomain、ScriptClass、ScriptInstance等核心类的设计实现,重点阐述了通过反射信息缓存提升访问效率、支持编辑/运行模式切换等关键技术点。

文章图片
#c++#c##游戏引擎
C++中嵌入C#作脚本引擎(一)

然后,对于所有C++中的Component,我们都在C#定义对应的类型。当C++和C#交互时传输时,如果数据类型不是基础类型(整型,浮点型等),而是C#中的托管类型(如string)或者自定义类型时,涉及到数据类型在C++和C#中的内存排布不同的情况时,需要进行数据的封送(Marshalling)。存储,简单起见,键类型这里选用ECS系统中entity本身的id,但其实是有问题的,更好的办法是给每

文章图片
#c++#c##游戏引擎
到底了