实验用品编辑器说明文档

实验用品编辑器说明文档


器材编辑系统-创建|编辑|还原器材

<table> <thead> <tr> <th>最后更新日期</th> <th>2024-1-10</th> </tr> </thead> <tbody> <tr> <td>作者</td> <td>QFord</td> </tr> <tr> <td>V1.0.0</td> <td>创建文档</td> </tr> <tr> <td>V1.0.1</td> <td>需求澄清1、编辑器材参数(2024-1-8)</td> </tr> <tr> <td>V1.0.2</td> <td>编辑器材-实现方案</td> </tr> <tr> <td>V1.0.3</td> <td>编辑器材-非运行时实现方案、验证和初步结论(2024-1-9)</td> </tr> <tr> <td>V1.0.4</td> <td>需求澄清2、编辑器材-运行时实现方案(2024-1-10)</td> </tr> <tr> <td>创建日期</td> <td>2024-1-5</td> </tr> <tr> <td>名词解释</td> <td>文中[组件]代表[物件播放组件]</td> </tr> </tbody> </table> <h1>用户故事</h1> <p>王永弟(2024-1-4 19:30):组件需支持类似Unity编辑器创建Cube的方式来创建器材。 如下图所示: <img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=395727d6e537b963541638b3f1e5f462&amp;amp;file=file.png" alt="" /></p> <p>&gt; 目标用户:使用组件的开发人员/策划等,如现在(2024-1)负责PSVR开发的同学。</p> <h2>编辑器材参数(2024-1-8)</h2> <p>在Unity开发环境中,将[器材参数菜单]的内容放置到[Inspector]面板编辑,编辑好后运行时可以反馈这些编辑的效果。 举例说明,电池可以配置几节,当设定好节数后,运行时就会加载对应节数的电池,同时也支持在运行时修改这些参数并有实时的反应。</p> <h1>需求澄清1(2024-1-8)</h1> <p>Unity中通过其编辑器菜单创建的Cube,支持两种模式:</p> <ul> <li>编辑态</li> <li>运行态 而物件播放组件创建的器材,目前都只支持运行态。 <strong>是否有在[编辑态]创建器材的需求?在运行的时候这个创建的器材可以正常使用。</strong> &gt; 有这个需求,同时新增了上述的[编辑器材参数]</li> </ul> <h1>需求澄清2(2024-1-10)</h1> <p>器材(Unity的游戏对象)在场景中的数据需要保存和还原</p> <ul> <li>所在的场景</li> <li>游戏对象名称</li> <li>所在的节点</li> <li>Tag&amp;Layer</li> <li>Transform</li> </ul> <p>在某场景,对若干器材进行了操作,可以保存为文件,支持导出和导入。 对于导入时,要考虑不存在的节点的自动创建和提示。</p> <h1>需求拆解1</h1> <ol> <li>我们的器材数量多达1000+,放在菜单上(即使分类好)会显得很臃肿,难以选择。 因此,需提供支持模糊搜索的列表供用户选择更合适。</li> <li> <p>我们可以针对用户通过菜单创建的器材的记录做保存,支持下次直接通过菜单快捷这些器材。 [可选] 2.1:支持记录的清除 2.2:支持记录的导出和导入 2.3:记录的最大数量限定为50</p> </li> <li>支持设置器材的父节点,并记录下来。</li> </ol> <p>&gt; 上面的【记录】都只是保存在本机,仅供本地用户使用,互不干扰。 [注意]需求方已确认此文档的方案选择。</p> <h1>创建器材-实现方案</h1> <p>创建器材主要是依赖于器材的Code,因此[器材Code表]的来源是我们需要关心的。 下面的几个方案主要就是针对这个[器材Code表]的来源来设计的。</p> <h2>方案1</h2> <p>用户手动输入需要的[器材Code表],组件根据这份输入的[器材Code表]生成创建器材的快捷菜单。</p> <h3>缺点</h3> <ul> <li>此快捷菜单无法共享,每个用户都要输入自己的</li> <li>用户需要自行找器材对应的Code</li> </ul> <h3>优点</h3> <ul> <li>组件投入最小</li> </ul> <h2>方案2</h2> <p>组件通过[颗粒编辑器]的[器材列表]或其他类似功能的地方,扩展出一个导出[器材Code表]的功能,把导出的[数据表]提供给[组件]使用。</p> <h3>缺点</h3> <ul> <li>有新的器材时,需要重新导出这个[器材Code表]并更新组件</li> </ul> <h3>优点</h3> <ul> <li>组件投入较小</li> <li>器材Code较全</li> </ul> <h2>方案3</h2> <p>组件直接对接服务端,获取最新的[器材Code表]。 服务端提供的接口是分页获取,可参考已有实现。 需要处理器材数量变化的时候更新数据。</p> <h3>缺点</h3> <ul> <li>组件投入较大</li> </ul> <h3>优点</h3> <ul> <li>器材Code最全</li> <li>可参考已有实现代码</li> </ul> <h2>方案选择</h2> <p>比较各个方案后,主要考虑到使用方的便捷和后期维护成本,首选方案3。</p> <p>&gt; 2024-1-8 需求澄清后,方案可能有所调整,待后续排期后再处理。</p> <h1>编辑器材-非运行时实现方案[不推荐]</h1> <p>编辑器材实现方案的核心是要可以在Unity编辑态下执行Lua代码</p> <ul> <li>器材的参数编辑后的业务执行逻辑是先由Lua负责处理的。</li> <li>创建子器材的业务依赖于Lua代码,比如酒精灯的灯帽。</li> </ul> <h2>实现方案问题</h2> <p>经过编辑态下创建器材的测试,存在较多问题 1:编辑态下不支持DontDestroyOnLoad方法,导致很多组件阻塞,影响功能。 如果去除DontDestroyOnLoad,会致使组件会多实例,需要解决,如下图所示: <img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=0a7c1934d72840f3181d87a3c658a224&amp;amp;file=file.png" alt="" /> 2:编辑态下的Lua代码获取一些数据失败 3:有时无法加载资源,却无异常报错信息,仅仅创建了一个器材名称的游戏对象和一个EditorNode的节点代码 4:有时加载ab包失败,提示重复加载 5:编辑态下代码无法断点调试,解决问题的效率较为低下 6:异常问题往往不会一次性全部暴露,只能遇到一个解决一个。 7:非运行时的Awake不会执行,导致很多初始化业务失败 ![非运行时创建器材-测试](<a href="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=d83f18831570915d120ffb23dbbe000d&amp;file=file.png">https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=d83f18831570915d120ffb23dbbe000d&amp;file=file.png</a> &quot;非运行时创建器材-测试&quot;)</p> <h2>实现方案-初步结论</h2> <p>初步判定,通过非运行时,想要设置器材参数并可视化反馈存在较大问题。 而运行时修改参数是没问题的,需要解决的是运行时的参数设置的保存和还原,类似颗粒编辑中的对应功能。</p> <h1>编辑器材-运行时实现方案[推荐]</h1> <ul> <li>在Unity开发环境,运行后可以通过菜单或者在窗口中创建器材</li> <li>器材的参数可以在Inspector面板上进行配置。</li> <li>支持保存和还原器材,即下次打开场景可以还原出上次器材的操作。 实现上述需求,类似于颗粒编辑器对器材的创建、保存和还原,可以参考其实现方案。</li> </ul> <p>器材参数配置</p> <p>1:通过器材参数配置信息、解析自动生成Inspector配置UI。 这个可以参考[用品编辑器]器材组件UI自动生产的方案。</p> <p>2:器材的保存和还原可以通过一个小组件进行实现,通过菜单命令在创建器材的时候在场景中生成VLE_SaveAndLoadManager游戏对象。</p> <p>&gt; 因为涉及到场景操作,场景编辑是独占的,故此功能在同一场景不支持多人并发操作,应明确提醒使用方。 如果需要支持多人操作(即使支持,存在冲突的风险,如占用同一位置),需要独特的设计和实现。故不推荐这么做。</p>

页面列表

ITEM_HTML