简介: 记得很早之前要在工程内定位一个 Script 文件那是一个难啊,最新遇到了新的方法,就如同在 Project 面板内搜索一样简单
unity版本: 2022.3.22f1c1
管线: URP
痛点
比如在很早之前,如果开发了一个插件,而这个插件内又是使用ScriptableObject 来作为配置文件,我希望在发布的包里没有配置文件,而是在第一次触发时自动加载,加载没有时自动创建,而这个文件的创建位置需要根据我的代码文件所在位置进行相对位置保存。这样做主要是为了当插件包被移动存放位置时,依然可以正确识别到配置文件。
之前怎么做的呢
- 先创建一个 ScriptableObject 配置文件的实例
- 然后使用 MonoScript.FromScriptableObject 方法获取这个实例的脚本文件
- 然后 AssetDatabase.GetAssetPath 方法获取脚本保存路径
var so=ScriptableObject.CreateInstance<MyObject>();
var script= MonoScript.FromScriptableObject(so);
UnityEngine.Object.DestroyImmediate(so);
var scriptPath=AssetDatabase.GetAssetPath(script);
虽然步骤不多,但是看上去也是挺麻烦的呢
新的查找方法
不知道是什么时候有的,或者可能一直都在
用法很简单,参考官方文档
AssetDatabase.FindAssets(string filter);
AssetDatabase.FindAssets(string filter, string[] searchInFolders);