虚拟实验室-Unreal 版本

虚拟实验室的Unreal 版本,第一个版本主要是以《探究通电螺线管外部的磁场分布》颗粒为例,设计和开发一个正式版本。


工程集成流程

<p>[TOC]</p> <table> <thead> <tr> <th>作者</th> <th>QFord</th> </tr> </thead> <tbody> <tr> <td>创建日期</td> <td>2024-10-14</td> </tr> <tr> <td>更新日期</td> <td>2024-10-17</td> </tr> <tr> <td>备注</td> <td>持续更新</td> </tr> <tr> <td>版本号</td> <td>V1.0.0</td> </tr> </tbody> </table> <p><strong>此工程集成流程基于UE5.4.3版本的工程进行降级,而集成插件的流程可供任何空项目集成参考</strong></p> <h1>1. 创建空工程</h1> <p>使用UE 5.3.2,通过<strong>游戏-空白模板</strong>创建空白项目,如下图所示: <img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=40fb4c0c52c500ca1ee5d620263231d3&amp;amp;file=file.png" alt="" /> &gt; 项目命名为:VLabUE</p> <h1>2. 创建工程文件夹</h1> <p>根据[项目开发规范-UE 工程目录规范](<a href="https://www.showdoc.com.cn/virtualLabUnreal/11235665419700683">https://www.showdoc.com.cn/virtualLabUnreal/11235665419700683</a> &quot;项目开发规范-UE 工程目录规范&quot;) 创建文件夹目录,如下图所示: <img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=27f0802ae6748afd112426987af6e60f&amp;amp;file=file.png" alt="" /></p> <h1>3. 集成插件</h1> <h2>3.1 新建插件文件夹</h2> <p>在VLabUE项目文件的同级目录创建插件文件夹:Plugins,如下图所示: <img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=fdba61dde8ee3cd9d311d30882637c4d&amp;amp;file=file.png" alt="" /></p> <h2>3.2 添加自研插件子模块</h2> <p>在上述新建的Plugins目录下添加子模块,注意添加的子模块所在的文件夹名称按照插件命名规范来,规范在上述的<strong>项目开发规范</strong>中。 需要添加的<strong>[子模块仓库地址链接文档](<a href="https://www.showdoc.com.cn/p/47bdde43271b2ee06ad6f2985c882e56">https://www.showdoc.com.cn/p/47bdde43271b2ee06ad6f2985c882e56</a> &quot;子模块仓库地址链接文档&quot;)</strong> 添加插件子模块的例图如下: <img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=ff5a5126185828812082936d06e6277d&amp;amp;file=file.png" alt="" /> &gt; 如果为了稳妥起见,可以先从底层插件开始添加,然后编译,没问题了再折腾上层的插件。拉插件的时候,要连带依赖的插件一起添加后再编译。</p> <h2>3.x 更新插件</h2> <p>自研插件还在不断开发迭代中,当前集成阶段可能随时需要更新</p> <h2>3.3 添加第三方插件</h2> <p>这些插件是直接放置在应用中,清单如下: DTBPJson GameplayMessageRouter UnLua UnLuaExtensions UnLuaTestSuite</p> <h2>3.4 检查插件内容</h2> <p>检查插件文件夹下是否存在内容,没有的应该立即处理,截止编写时间(2024-10-14)的插件目录,如下图所示: <img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=d743cbd54d35b0a6ddd048c1884ef64e&amp;amp;file=file.png" alt="" /></p> <h2>3.5 编译工程</h2> <p><strong>在UE编辑器中关闭Live Coding-启用实时代码编写</strong>先试用下列配置进行编译,如下图所示: <img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=4f04e6246779ec0d0bd3efcc351ed766&amp;amp;file=file.png" alt="" /></p> <h1>4. 烘焙内容&amp;打包</h1> <ol> <li> <p>交互资源异常 <img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=7f84114d34da8771ba7ea7ab7ef0be79&amp;amp;file=file.png" alt="" /> <strong>解决方案:</strong>资源版本太新了,需要降级的到当前工程引擎版本。</p> </li> <li>PathTracer资源异常 <strong>解决方案:</strong>资源版本太新了,需要降级的到当前工程引擎版本。 &gt; 此插件有较多蓝图,先前有被修改过,故无法直接使用官方的版本,需要人工处理。此插件目前由引擎接管,交由陈铭处理。 <strong>注意:</strong>更新后需要清空插件缓存,否则可能不生效</li> </ol> <h1>5. 迁移器材</h1> <h2>5.1:开关</h2> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=999f9f1ad8cbdd97a49b470922a976be&amp;amp;file=file.png" alt="" /> <strong>解决方案:</strong> 经过排查,是引擎的组件改名导致引用丢失,重新挂载组件并修改蓝图节点解决。</p> <h2>5.2:电池</h2> <ul> <li> <p>迁移电池蓝图,打开后崩溃报错: <img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=a3917f23488245a5ff942ad940d24c51&amp;amp;file=file.png" alt="" /> &gt; 更新引擎并重新迁移</p> </li> <li>电池初始化代码从lua转蓝图</li> <li> <p>添加电池移动组件</p> <h2>5.3:螺线管</h2> </li> <li>迁移螺线管</li> <li> <p>添加移动组件</p> <h2>5.4:小磁针</h2> </li> <li>迁移小磁针</li> <li> <p>解决移动文件夹后xiaochizheng_chitie.uasset资源无法移动的问题</p> <h2>5.5 导线</h2> <p>&gt; 2024-10-17:目前由WYD同学处理中</p> </li> </ul> <h1>6. 迁移场景</h1> <p>6.1 美术仓库工程-关卡目录整理 6.2 美术仓库工程-项目设置-地图和模式-默认地图-编辑器开始地图/游戏默认地图 设定 6.3 美术仓库工程-烘焙内容/出包-测试 &gt; 张庆(182413) 2024/10/16 14:07:09 文攀这几天请假了 我这边就代劳处理下,以便将美术关卡资源同步到开发工程中。</p> <p>6.4 关卡资源迁移到开发工程 6.5 开发工程-烘焙内容/出包-测试</p> <p>&gt;<strong>注意:</strong>需要留意场景的性能,最简单直观的是在开发环境打开[显示FPS]。 2024-10-17:发现场景的帧率在镜头离实验桌面较近时,帧率会狂掉到报红的情况,但又不是必现的!先反馈给美术备案下。</p> <h1>7. 其他杂项</h1> <h2>7.1 迁移LabGameMode</h2> <p>LabGameMode依赖6.2的模块,需要同时进行,UE工程文件需要更新依赖模块信息。 <strong>注意</strong>:项目中需要设置LabGameMode,否则交互无法初始化会导致运行带有器材的关卡时崩溃!!! &gt;冗余的模块如:VLabUE_GeneralAbility无需添加了。</p> <h2>7.2 迁移模块</h2> <ol> <li>LuaToUnreal &gt;需在UE工程插件中添加子模块</li> </ol> <h2>7.3 UnrealCSharp引擎生成和编译</h2> <p>在UE编辑器命令行执行相关的生成和编译命令 报红反馈陈铭: <img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=2342255a58414e183511d523d5cd4b37&amp;amp;file=file.png" alt="" /> <strong>解决方案:</strong>更新插件后重新编译</p> <h2>7.4 PC端运行非全屏(便于关闭)</h2> <p>通过DefaultGameUserSettings.ini配置文件和代码实现</p> <h2>7.x 删除旧规范器材Lua</h2> <h1>8. 创建主关卡</h1> <h1>9. 打包验证</h1> <p><strong>注意:</strong>有资源更新/插件更新都建议<strong>烘焙内容</strong>和<strong>打包</strong>验证,早发现(bug),早治疗(fix)。</p> <h2>PC端</h2> <h2>Android端</h2> <h1>X. 异常处理</h1> <ol> <li> <p>子模块的文件夹命名VLabPlayerAdapter和远端冲突 <img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=81f5db67ba0257a27c048574d6ec68b2&amp;amp;file=file.png" alt="" /> <strong>解决方案:</strong> 子模块的文件夹名进行适当调整,如:VLabPlayerAdapterUE,或者还有其他覆盖提交的方式。</p> </li> <li> <p>引擎组件和交互组件编译错误 <img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=bdfb068f3836833f22cc5fc3efd0942c&amp;amp;file=file.png" alt="" /> <strong>解决方案:</strong> 物件播放器更新了接口,其他依赖的组件需要同步更新。</p> </li> <li>fatal error C1900 乱码错 <img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=b9d25b235d512a22112cd2c14975adf0&amp;amp;file=file.png" alt="" /> <strong>临时解决方案:</strong>如下图所示: <img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=bc9e35d5681ecf42da1df5e5a070be94&amp;amp;file=file.png" alt="" /> &gt;临时解决方案只能使用debug方式编译和发布</li> </ol> <p><strong>终极解决方案 2024-10-16(来自陈铭)</strong>,如下图所示: 532 默认使用低版本的msvc编译,导致打包异常 <img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=e0394162fa003671224e75fd25b4ab92&amp;amp;file=file.png" alt="" /></p> <ol> <li> <p>更新播放器插件后打包报错 <img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=f62eed8e6e01e99f520fa8c26754520a&amp;amp;file=file.png" alt="" /> <strong>解决方案</strong>:播放器排查处理,报错的方法从Editor宏移到外面。</p> </li> <li>关卡内容变没了/运行带器材的关卡崩溃 插件开发人员某个提交导致 <img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=7c95a9813bd46d0f37d0331ef470ab2a&amp;amp;file=file.png" alt="" /> <strong>解决方案</strong>:重新迁移美术场景资源、设置项目的Gamemode</li> </ol> <h1>x1. 美术资源问题反馈</h1> <ol> <li>为美术提供物理器材的迁移工程并反馈开关接线柱问题(2024-10-15)</li> </ol> <h1>x2. 实用方法</h1> <h2>1. 优雅的删除子模块</h2> <pre><code># 逆初始化模块,其中{MOD_NAME}为模块目录,执行后可发现模块目录被清空 git submodule deinit {MOD_NAME} # 删除.gitmodules中记录的模块信息(--cached选项清除.git/modules中的缓存) git rm --cached {MOD_NAME} # 提交更改到代码库,可观察到'.gitmodules'内容发生变更 git commit -am &amp;quot;Remove a submodule.&amp;quot;</code></pre> <p>&gt; 主要用于子模块所在的文件夹需要重命名的时候,得先删除子模块 <a href="https://www.jianshu.com/p/ed0cb6c75e25">https://www.jianshu.com/p/ed0cb6c75e25</a></p> <h2>2. Cook工程中的全部内容设置</h2> <p>为防止插件中的内容(即使开启了打包的地图过滤)被过滤,可以按照下图进行设置 <img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=0db5dc6fed664dffd01935cb64ec4df2&amp;amp;file=file.png" alt="" /></p>

页面列表

ITEM_HTML