Unity2018 : 预制体及其路径

项目升级到Unity 2018 之后, 发现很多旧的API都过时了,比如预制体获取路径这一部分就没了。今天翻了翻Unity的代码,把新找的API做个记录。

 

通过预制获取其路径

这算是一个常用功能了,这个功能分两种情况:

1、所选择的物体在资产(Project)中

此时直接调用如下API即可获得:

 Path = UnityEditor.PrefabUtility.GetPrefabAssetPathOfNearestInstanceRoot(targetGameObject);

2、所选择的物体在层级(Hierachy)中

此时需要先将其连接到资产面板中,然后获取其路径:

var prefab = UnityEditor.PrefabUtility.GetPrefabInstanceHandle(targetGameObject);
if (prefab != null)
    { Path = UnityEditor.PrefabUtility.GetPrefabAssetPathOfNearestInstanceRoot(prefab); }
else
    { Logger.LogError("此物品没有预制:" + targetGameObject); }

 

注意,无论用哪种方法,获取到的路径都是在相对位置下、带后缀名的路径。例如:

Assets/Resources/aaa/bbb/ccc.prefab

这个路径一般需要二次处理,因为他并不能通过 Resources.Load 加载出来。这里我选择用字符串来进行处理:

Path = Path.Substring(17, Path.Length - 24);

最后得到的结果就是 : aaa/bbb/ccc 这样的形式,就可以直接通过 Resources.Load 加载。

 

通过资源路径获取预制

这一部分与之前变化不大,目前我只找到在 Resources 目录下的资源加载方法:

GameObject obj = Resources.Load<GameObject>(Path);

这里获取到的 GameObject 是在资产中的资源,如果直接赋值在属性面板上就是蓝色的小方块,如下图所示:

如果要加载进游戏,是需要把这个物体进行克隆。不过我目前的需求就是获取预制,所以到这一步就可以了。

 

 

 

 

 

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值