UnityEditor 代码编辑预制件


// 是否处于预制件模式,获取预制件模式的预制件路径
PrefabStage prefabStage = PrefabStageUtility.GetCurrentPrefabStage();
if (prefabStage != null) {
    Debug.Log("处于预制件模式");
    Debug.Log($"预制件模式修改的预制件路径:{prefabStage.prefabAssetPath}");
    
    // 预制件模式下,在当前修改的预制件下创建 GameObject
    var go = new GameObject("aa");
    go.transform.parent = prefabStage.prefabContentsRoot.transform;
    
    
    #region 在 UGUI 预制件下创建 Image
    var parent = prefabStage.prefabContentsRoot.transform.Find("PanelJigSaw/SafeAreaGroup/RootGroup/Images10");

    var inst = new GameObject($"Image (1)",typeof(RectTransform),typeof(Image));
    inst.transform.SetParent(parent);

    // 更改 Image 组件的 Sprite
    var image = inst.GetComponent();
    image.sprite = AssetDatabase.LoadAssetAtPath("Assets/Textures/PanelJigSaw/10/5.png");
    image.SetNativeSize();

    // 更改 Width 和 Height
    var rectTransform = inst.GetComponent();
    rectTransform.sizeDelta = rectTransform.sizeDelta * 0.28f;
    #endregion 在 UGUI 预制件下创建 Image
    
}