实际项目开发过程中,场景(.scene)文件以及图集、贴图资源等都会建一些文件夹进行模块化管理。
在编辑场景的时候,有时候需要在不同的目录来回跳转。依靠Laya编辑器下工程列表目录操作不便,
所以我们来扩展一下场景文件菜单,添加目录快捷跳转功能。
首先我们通过菜单中的内容来定位菜单的添加位置
在layabuilder.max.js中查找,发现内容位于UIPanel(编辑区分页管理器)类中。在initTabMenu中添加,
在onEmunSelect中进行响应。
添加自定义的菜单及响应,进行测试
initTabMenu
//editor 场景文件菜单添加定位功能///
var menu=ContextMenu.createMenu("定位到common图集","关闭","关闭其他","关闭全部");
///
onEmunSelect
case "定位到common图集":
console.log("点击定位到common图集菜单")
break;
刷新编辑器后查看效果
可以看到菜单添加及响应都没有问题。
接下来我们来看定位功能的实现。
预设文件右键菜单中有一项定位预设的功能
通过关键字查找,可以查看到该功能的响应代码如下:
通过断点调试,发现pPath参数传入的值为从工程根目录起的相对目录。
我们在刚才新添加的菜单响应中添加如下代码:
case "定位到common图集":
Notice.notify("SelecteResFile",["laya/assets/comp"]);
break;
刷新编辑器进行测试。
到这里,定位特定目录的功能已经实现了。
有时候会同时打开比较多的场景或预设文件,所以也会有定位场景文件的需求,接下来我们
来实现特定场景文件的定位功能。
要跳转到打开场景的位置,首先要获取打开场景文件的文件目录。
通过简单阅读UIPanel类,发现维护了表示当前操作界面的变量_currViewer,
我们在右键菜单的响应方法onEmunSelect中打断点来进行观察:
可以发现_curViewer中的_pagePath变量存储了当前操作对象的路径。
pagePath的值为绝对路径,但我们需要的是相对路径,通过编辑器启动时的打印内容,简单
的阅读上下文后,找到了一个包含工程路径的类SystemSetting。经过打印验证,可以知道SystemSetting中的
workPath中存储了工程目录。
我们按照之前的步骤添加新菜单及对应的响应代码
initTabMenu
//editor 场景文件菜单添加定位功能///
var menu=ContextMenu.createMenu("在工程列表中定位","定位到common图集","关闭","关闭其他","关闭全部");
///
onEmunSelect
case "在工程列表中定位":
var filePath = this._currViewer.pagePath.replace(SystemSetting.workPath,"");
Notice.notify("SelecteResFile",[filePath]);
break;
刷新测试:
到这里,场景文件菜单中定位功能就扩展完成了