PackageManager包作为Unity3D功能模块化的未来趋势,我们可能会将我们的公共模块进行标准化管理,可能会涉及我们包内资源的读取和使用。
一,获取包的绝对路径
通过Path.GetFullPath("Packages/" +对应的包名);
我们可以轻松获取我们包所在的绝对路径。- 如
Path.GetFullPath("Packages/com.unity.ugui");
我们可以得到路径D:\UnityProject\LearnUnity\Library\PackageCache\com.unity.ugui@1.0.0。
二,通过AssetDatabase.LoadAssetAtPath加载包内资源
- 由于
AssetDatabase.LoadAssetAtPath
需要相对路径,所以我们可以通过AssetDatabase.LoadAssetAtPath<Texture2D>("Packages/包名/资源相对路径")
来进行加载。 - 如
AssetDatabase.LoadAssetAtPath<Texture2D>("Packages/com.unity.textmeshpro/Editor Resources/Textures/btn_AlignBottom_Light.psd")
可以加载对应包文件夹下的资源。
三,除了AssetDatabase加载方式,我们也可以使用Resources方式加载
- 将Resources放置在任意Editor文件下,将会使对应Resources文件夹下的资源仅限在编辑器模式下使用。