unity psb文件生成UI

psb文件生成UI

  • 1.先将psd文件存储为psb文件
  • 2.在Unity中导入 2D PSD Importer 插件和psb文件
  • 3.创建转换的代码,放入Editor文件夹
  • 4.连续步骤
  • 5.看这里

1.先将psd文件存储为psb文件

unity psb文件生成UI_第1张图片
unity psb文件生成UI_第2张图片
unity psb文件生成UI_第3张图片

2.在Unity中导入 2D PSD Importer 插件和psb文件

unity psb文件生成UI_第4张图片
unity psb文件生成UI_第5张图片

3.创建转换的代码,放入Editor文件夹

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
using UnityEngine.UI;

public class CreatePsbUI : EditorWindow {

    [MenuItem("Tools/创建PsbUI", false, 24)]
    private static void ShowWindow() {
        var window = GetWindow<CreatePsbUI>();
        window.titleContent = new GUIContent("创建PsbUI");
        window.Show();
    }

    private string preName;
    private void OnGUI()
    {
        preName = GUILayout.TextField(preName, GUILayout.Height(20));
        if (GUILayout.Button("生成UI") && !string.IsNullOrEmpty(preName))
        {
            RectTransform par = GameObject.Find(preName).AddComponent<RectTransform>();

            for (int i = 0; i < par.childCount; i++)
            {

                RectTransform rect = par.GetChild(i).gameObject.AddComponent<RectTransform>();

                SpriteRenderer spriteRenderer=par.GetChild(i).GetComponent<SpriteRenderer>();

                par.GetChild(i).gameObject.AddComponent<Image>().sprite = spriteRenderer.sprite;

                GameObject.DestroyImmediate(spriteRenderer);

                rect.sizeDelta = rect.sizeDelta * 100;
                rect.anchoredPosition = rect.anchoredPosition * 100;
            }
        }
    }
}


4.连续步骤

1.将psb文件拖入面板中
unity psb文件生成UI_第6张图片
2.创建它的原始预制体,这样才能改变它的组件
unity psb文件生成UI_第7张图片
unity psb文件生成UI_第8张图片
3.解压缩该预制体,这样才能在面板中修改组件
unity psb文件生成UI_第9张图片
4.打开刚刚的代码编写的编辑器并输入预制体的名称并点击按钮
unity psb文件生成UI_第10张图片
5.这样就能得到一个完整的UI了
unity psb文件生成UI_第11张图片

5.看这里

上面的虽然可以用,但是图多的话也很麻烦。
所以有了新方法: 大佬的方法https://zhuanlan.zhihu.com/p/134136125
看大佬的方法我自己修改了点东西,在PSDImporter代码中OnProducePrefab方法最后一段添加

 //修改为UI

            RectTransform par = root.AddComponent<RectTransform>();

            float x = 100;//图片的比例 决定生成的UI的大小,这个得自己调整,一般是100,可能也有其他的
            float y = 100;
            for (int i = 0; i < par.childCount; i++)
            {

                RectTransform rect = par.GetChild(i).gameObject.AddComponent<RectTransform>();

                SpriteRenderer spriteRenderer = par.GetChild(i).GetComponent<SpriteRenderer>();

                par.GetChild(i).gameObject.AddComponent<Image>().sprite = spriteRenderer.sprite;

                GameObject.DestroyImmediate(spriteRenderer);
                
                rect.sizeDelta = new Vector2(rect.sizeDelta.x * x, rect.sizeDelta.y * y);
                rect.anchoredPosition =
                new Vector2(rect.anchoredPosition.x * x, rect.anchoredPosition.y * y);
            
            }

            return root;

你可能感兴趣的:(Unity,c#,unity,ui,c#)