using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEditor;
using UnityEditor.Experimental.SceneManagement;
[InitializeOnLoad]
class CustomPrefabEnvironment
{
static CustomPrefabEnvironment()
{
// Uncomment this to dynamically create a plane when entering Prefab Mode
PrefabStage.prefabStageOpened += OnPrefabStageOpened;
}
static void OnPrefabStageOpened(PrefabStage prefabStage)
{
Debug.Log("OnPrefabStageOpened " + prefabStage.prefabAssetPath);
// Get info from the PrefabStage
var root = prefabStage.prefabContentsRoot;
var scene = prefabStage.scene;
GameObject sceneRootCanvas = null;
if (root.GetComponent<Canvas>() == null)
return;
var sceneRootObjs = scene.GetRootGameObjects();
for (int i = 0; i < sceneRootObjs.Length; i++)
{
var sceneRootObj = sceneRootObjs[i];
if (sceneRootObj == root)
continue;
if (sceneRootObj.GetComponent<Canvas>())
{
sceneRootCanvas = sceneRootObj;
break;
}
}
if (sceneRootCanvas)
{
root.transform.SetParent(sceneRootCanvas.transform);
GameObject obj = AssetDatabase.LoadAssetAtPath<GameObject>(prefabStage.prefabAssetPath);
RectTransform rcTrans = root.GetComponent<RectTransform>();
RectTransform srcRcTrans = obj.GetComponent<RectTransform>();
rcTrans.localPosition = srcRcTrans.localPosition;
rcTrans.localScale = srcRcTrans.localScale;
rcTrans.localRotation = srcRcTrans.localRotation;
rcTrans.pivot = srcRcTrans.pivot;
rcTrans.anchorMin = srcRcTrans.anchorMin;
rcTrans.anchorMax = srcRcTrans.anchorMax;
rcTrans.offsetMax = srcRcTrans.offsetMax;
rcTrans.offsetMin = srcRcTrans.offsetMin;
rcTrans.anchoredPosition = srcRcTrans.anchoredPosition;
rcTrans.anchoredPosition3D = srcRcTrans.anchoredPosition3D;
rcTrans.sizeDelta = srcRcTrans.sizeDelta;
}
}
}
unity2018编辑UI节点Bug问题解决方案
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 1. 王凯歆?她是谁? 是退学高中生?萌系美少女?叛逆95后?还是,创业俏达人?对于别人给的标签,王凯歆并不在意,...