虚拟实验室-Unreal 版本

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


02应用整合需求和解决方案-V0.1.0

<p>[TOC]</p> <table> <thead> <tr> <th>作者</th> <th>QFord</th> </tr> </thead> <tbody> <tr> <td>创建日期</td> <td>2024-7-29</td> </tr> <tr> <td>更新日期</td> <td>2024-8-1</td> </tr> </tbody> </table> <h1>需求描述</h1> <p><strong>需求来源:</strong>锐锋面谈,一起参与的同学有洪彬和若雯。</p> <h2>1. 剧情实现框架</h2> <p>基于若草的范例(NDStarterGame),使用FlowGraph框架来实现剧情的演绎,剧情的基本元素是使用seq实现的。 &gt; 2024/7/25 13:17:55 成功接收离线文件&quot;NDStarterGame.7z&quot;。发送者:洪彬</p> <p><strong>需求拆解</strong>:</p> <ol> <li>基于已有颗粒,进行简单的剧情脚本设计</li> <li>基于FlowGraph和Seq实现剧情脚本的内容</li> </ol> <h2>2. 应用整合</h2> <p>期望若干颗粒整合到一起,在UE工程目录中做好划分。 <strong>整合的好处:</strong></p> <ol> <li>整合到一起,便于后续的出包演示。</li> <li>整合到一起,便于后续接入DLC方案。</li> <li>整合到一起,便于复用公共能力。</li> <li>整合到一起,越往后整合,解决冲突的成本越高,故宜早不宜迟。</li> </ol> <h3>技术方案</h3> <h4><strong>资源目录</strong>的规范:</h4> <p>Content ├─FutureLab │ ├─BeautyLab │ │ ├─PeriodicTable │ │ └─CircuitFaultAnalysis │ │ └─...... │ ├─Common │ ├─Shell │ ├─VLabUE │ │ ├─MagneticField │ │ └─......</p> <p>&gt; BeautyLab:用于存放<strong>最美颗粒</strong>的内容 VLabUE:用于存放<strong>虚拟实验室原有颗粒</strong>的内容 Common:用于存放<strong>公共</strong>的内容,比如引擎组件相关的业务 Shell:用于存放<strong>外壳</strong>的内容</p> <h4><strong>代码目录及其他</strong>规范</h4> <p>组件代码是基于模块化和插件方式开发,规范详见 [UE-项目开发规范](<a href="https://www.showdoc.com.cn/virtualLabUnreal/11235665419700683https://www.showdoc.com.cn/virtualLabUnreal/11235665419700683">https://www.showdoc.com.cn/virtualLabUnreal/11235665419700683https://www.showdoc.com.cn/virtualLabUnreal/11235665419700683</a> &quot;UE-项目开发规范&quot;)</p> <h3>应用内通信</h3> <h4>1. 安装插件</h4> <p>GameplayMessageRouter,会提交到vlab-ue项目,不需要另外安装</p> <h4>2. 定义GameplayTags</h4> <p>Project Settings-&gt;Project-&gt;GameplayTagList <img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=c75597845239c9fb8a8dbf81d5ab7372&amp;amp;file=file.png" alt="" /> 已添加backMainLevel事件</p> <h4>3. 全局监听事件</h4> <p>Project Settings-&gt;Project-&gt;Maps &amp; Modes—-&gt;Game Instance Class 添加一个GameInstance蓝图中添加Listen for Gameplay Message GameInstance蓝图中添加Listen for Gameplay Message <img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=ed5374a2827b7d637a7e5959f4cd06d5&amp;amp;file=file.png" alt="" /> delay是为了让监听生效 注意Channel值,是在第二步定义</p> <h4>4. 创建结构体</h4> <p>结构体用于定义消息内容 <img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=5ff6237ed0177399f1c6715e99b4c038&amp;amp;file=file.png" alt="" /></p> <h4>5. 蓝图发消息</h4> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=6385ff05136d7af120b1c16fc3f1df23&amp;amp;file=file.png" alt="" /> Channel一样选择tag,收发消息的tag一致才能收到消息</p> <h3>问题排查</h3> <h4>1. UE工程内资源移动-坑点1-资源引用丢失问题</h4> <p>Unreal的资源迁移删除原有文件夹会导致引用丢失,下面提供了一种方法。 PS:如果不删除原有文件夹(迁移后资源移动了,原有文件夹仅保留重定向文件),是不会导致引用丢失的。 <img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=24695db9ca65dc86b81b820e1b8b42fe&amp;amp;file=file.png" alt="" /> <a href="https://www.cnblogs.com/kekec/p/13498833.html">https://www.cnblogs.com/kekec/p/13498833.html</a></p> <h4>2. UE工程内资源移动-坑点2-UnrealCSharp蓝图路径问题</h4> <p>UnrealCSharp的相关的映射蓝图路径不会更新,会导致异常。下图显示了运行时的错误信息: <img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=c67e99f79e43e978354a7931b6d4df0b&amp;amp;file=file.png" alt="" /> 排查后判定为引擎原因,同步陈铭同学处理,解决方案如下:</p> <p>1、pull 1.1:在工程根目录pull 1.2:在下面的目录pull-子模块的 <img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=c5f1feafb9677eb6b70b818cfb18a7ec&amp;amp;file=file.png" alt="" /> 2、删除以下文件夹 <img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=658201e44b030235f00b9aeeb649e33c&amp;amp;file=file.png" alt="" /> <img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=9ca552dd0fdecab187989105a49ab3ec&amp;amp;file=file.png" alt="" /> 3、启动ue,按顺序在UE的Cmd输入控制台命令: 分析、创建编码、编译 UnrealCSharp.Editor.Generator UnrealCSharp.Editor.CodeAnalysis UnrealCSharp.Editor.Generator UnrealCSharp.Editor.Compile 4、重启UE</p> <h4>3. GeneralAbility模块报错阻塞</h4> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=480a12ada4845d2579dd48c5c6103b29&amp;amp;file=file.png" alt="" /> <strong>临时:解决方案:</strong> 因UnrealCSharp方案会自动根据C++生产C#代码,这块的代码如上图Tools.cs异常会导致上述[2]的引擎代码生成阻塞,从而导致异常! 正常应该从UnrealCSharp侧处理,忽略非引擎组件模块的C++代码转C#。 <strong>直接删除无关的Tools.cs文件即可解决。</strong></p>

页面列表

ITEM_HTML