(二)引擎向研究之——————unity2018.3新Prefab系统的常用API详解
PrefabUtility这个类是主要用到的,我们来看下里面的常用方法是做什么的。
一、PrefabUtility.SaveAsPrefabAsset()方法
public static GameObject SaveAsPrefabAsset(GameObject instanceRoot, string assetPath, out bool success);
该方法是把一个gameobject保存成预设体,传参go的根节点,保存到哪个路径下,可以返回一个bool值说明是否保存成功,也会返回该预设体的GameObject。(注意:原gameobject和该预设体是没有关联引用的)。

二、PrefabUtility.SaveAsPrefabAssetAndConnect()方法
public static GameObject SaveAsPrefabAssetAndConnect(GameObject instanceRoot, string assetPath, InteractionMode action, out bool success);
InteractionMode.AutomatedAction或InteractionMode.UserAction = 1
该方法是把一个gameobject保存成预设体,传参go的根节点,保存到哪个路径下,交互模式有两种,一种是过滤显示确认对话框,防止它记录撤销的历史记录,另一种是允许显示对话框,允许记录撤销的历史记录,可以返回一个bool值说明是否保存成功,也会返回该预设体的GameObject。(注意:原gameobject和该预设体有关联引用)。

三、PrefabUtility.GetPrefabAssetType()方法
public static PrefabAssetType GetPrefabAssetType(UnityEngine.Object componentOrGameObject);
得到预设体的预设体资源类型。
public enum PrefabAssetType
{
NotAPrefab = 0,//正在查询的对象不是预制体的一部分。
Regular = 1,//正在查询的对象是常规预制体的一部分。
Model = 2,//正在查询的对象是模型预制件的一部分。
Variant = 3,//正在查询的对象是预制体变体的一部分。
MissingAsset = 4//正在查询的对象是预制件实例的一部分,但因为资产缺少无法确定预制件的实际类型。
}
四、PrefabUtility.GetPrefabInstanceStatus()方法
public static PrefabInstanceStatus GetPrefabInstanceStatus(UnityEngine.Object componentOrGameObject);
获得预设体实例的状态。参数传入组件或游戏对象。
public enum PrefabInstanceStatus
{
NotAPrefab = 0, //该对象不是预制体实例的一部分
Connected = 1, //预设体实例连接到其预设体
Disconnected = 2, //预设体实例未连接到其预设体
MissingAsset = 3 //预设体实例缺少其预设体
}
五、PrefabUtility.SaveAsPrefabAsset()方法
public static GameObject SaveAsPrefabAsset(GameObject instanceRoot, string assetPath);
使用此函数在给定的 GameObject 的目标路径上创建预设体,包括场景中的任何子项,而不修改原对象。返回已保存的预设体。
该操作不会让游戏对象和预设体关联引用,脚本上如果引用该预设体,也不会丢失引用。类似老的API的ReplacePrefabOptions.ReplaceNameBased的操作。
六、PrefabUtility.SavePrefabAsset()方法
public static GameObject SavePrefabAsset(GameObject asset);
使用此函数可以保存现有预设体资源 ,在内存中保存到磁盘。参数传入要保存的预设体(不能是预设体实例)。返回保存后的预设体。感觉有点鸡肋的方法。
七、PrefabUtility.SaveAsPrefabAssetAndConnect()方法
public static GameObject SaveAsPrefabAssetAndConnect(GameObject instanceRoot, string assetPath, InteractionMode action);
使用此函数在给定的 GameObject 的给定路径上创建预设体,包括场景中的任何子项, 同时游戏对象和新预设体关联引用。返回预设体。
该方法会使游戏对象和预设体关联引用,并且如果有脚本引用该预设体,预设体的引用不会丢失。类似老的API的ReplacePrefabOptions.ReplaceNameBased和ConnectToPrefab的组合操作。
更多推荐



所有评论(0)