少年修仙传客户端基础资源
client_Wu Xijin
2019-05-22 13348ac290f50dc3506ba38676613b253ce16699
3335 提交一个三级界面工具
2个文件已添加
182 ■■■■■ 已修改文件
Assets/Editor/Tool/ThirdLevelFrameProcessor.cs 170 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Editor/Tool/ThirdLevelFrameProcessor.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Editor/Tool/ThirdLevelFrameProcessor.cs
New file
@@ -0,0 +1,170 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
using System.IO;
using System.Text.RegularExpressions;
using UnityEngine.UI;
public class ThirdLevelFrameProcessor
{
    [MenuItem("程序/加载三级界面")]
    public static void CreateAllThirdLevelFrame()
    {
        var oldSprite1 = UILoader.LoadSprite("1LevelFrame", "TY_K_3J_2");
        var oldSprite2 = UILoader.LoadSprite("1LevelFrame", "TY_K_3J_1");
        var oldSprite3 = UILoader.LoadSprite("4Interactable", "Close_a");
        var newSprite1 = UILoader.LoadSprite("1LevelFrame", "ThirdLevel_Frame");
        var newSprite2 = UILoader.LoadSprite("1LevelFrame", "ThirdLevel_Bg");
        var newSprite3 = UILoader.LoadSprite("1LevelFrame", "ThirdLevel_Close");
        var path = AssetDatabase.GetAssetPath(newSprite1);
        var guid = AssetDatabase.AssetPathToGUID(path);
        var path1 = AssetDatabase.GetAssetPath(oldSprite1);
        var guid1 = AssetDatabase.AssetPathToGUID(path1);
        var path2 = AssetDatabase.GetAssetPath(oldSprite2);
        var guid2 = AssetDatabase.AssetPathToGUID(path2);
        var path3 = AssetDatabase.GetAssetPath(oldSprite3);
        var guid3 = AssetDatabase.AssetPathToGUID(path3);
        var allwindowGuids = AssetDatabase.FindAssets("t: prefab", new string[] { "Assets/ResourcesOut/UI/Window" });
        var totalCount = allwindowGuids.Length;
        var count = 0;
        foreach (var windowGuid in allwindowGuids)
        {
            count++;
            var windowPath = AssetDatabase.GUIDToAssetPath(windowGuid);
            var content = File.ReadAllText(Application.dataPath + windowPath.Substring(6, windowPath.Length - 6));
            GameObject instance = null;
            GameObject prefab = null;
            if (Regex.IsMatch(content, guid))
            {
                prefab = AssetDatabase.LoadAssetAtPath<GameObject>(windowPath);
                instance = GameObject.Instantiate(prefab);
                instance.name = prefab.name;
                instance.SetActive(true);
                PrefabUtility.ConnectGameObjectToPrefab(instance, prefab);
            }
            continue;
            if (prefab == null)
            {
                continue;
            }
            Vector2 min = Vector2.zero;
            Vector2 max = Vector2.zero;
            var width = 0f;
            var images = prefab.GetComponentsInChildren<Image>(true);
            foreach (var image in images)
            {
                if (image.sprite == oldSprite1)
                {
                    max = UIUtility.GetMaxWorldPosition(image.rectTransform);
                    width = image.rectTransform.rect.width;
                }
            }
            foreach (var image in images)
            {
                if (image.sprite == oldSprite2 && min == Vector2.zero)
                {
                    min = UIUtility.GetMinWorldPosition(image.rectTransform);
                }
            }
            Image image1 = null;
            Image image2 = null;
            Image image3 = null;
            foreach (var image in images)
            {
                if (image.sprite == oldSprite1)
                {
                    image1 = image;
                    var rectTransform = image.rectTransform;
                    var oldHeight = rectTransform.rect.height;
                    image.sprite = newSprite1;
                    image.type = Image.Type.Sliced;
                    image.transform.SetAsLastSibling();
                    rectTransform.pivot = rectTransform.anchorMax = rectTransform.anchorMin = Vector2.one * 0.5f;
                    var x1 = max.y - oldHeight;
                    var x2 = (max.y - min.y) * 0.5f - oldHeight;
                    var y = x1 - x2;
                    max = max.SetY(max.y - 3.5f);
                    rectTransform.sizeDelta = new Vector2(width + 13, (max.y - min.y));
                    rectTransform.anchoredPosition = new Vector2((max.x + min.x) - 3.5f, y - 3.5f);
                }
            }
            foreach (var image in images)
            {
                if (image.sprite == oldSprite2)
                {
                    if (image2 == null)
                    {
                        image2 = image;
                        var rectTransform = image.rectTransform;
                        image.sprite = newSprite2;
                        image.type = Image.Type.Simple;
                        rectTransform.pivot = Vector2.one * 0.5f;
                        rectTransform.sizeDelta = image1.rectTransform.sizeDelta - new Vector2(55, 23);
                        rectTransform.position = image1.transform.position - new Vector3(0, 8f, 0);
                        var mirrorImage = image2.transform.GetComponent<MirrorImage>();
                        if (mirrorImage)
                        {
                            Object.DestroyImmediate(mirrorImage, true);
                        }
                    }
                    else
                    {
                        GameObject.DestroyImmediate(image.gameObject, true);
                    }
                }
            }
            foreach (var image in images)
            {
                if (image.sprite == oldSprite3 && image.gameObject.activeSelf)
                {
                    image3 = image;
                    var rectTransform = image.rectTransform;
                    image.sprite = newSprite3;
                    image.SetNativeSize();
                    image.transform.SetParent(image1.transform);
                    image.transform.SetAsLastSibling();
                    rectTransform.position = image1.transform.position
                        + new Vector3(image1.rectTransform.rect.width * 0.5f, image1.rectTransform.rect.height * 0.5f, 0f)
                        - new Vector3(33f, 2.3f, 0f);
                }
            }
            EditorUtility.DisplayProgressBar("处理中三级界面", "处理中...", (float)count / totalCount);
        }
        EditorUtility.ClearProgressBar();
    }
}
Assets/Editor/Tool/ThirdLevelFrameProcessor.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: cf0c159e5965c5f4ea75f73834d75944
timeCreated: 1558432453
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant: