1.先将psd文件存储为psb文件
2.在Unity中导入 2D PSD Importer 插件和psb文件
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文件拖入面板中
2.创建它的原始预制体,这样才能改变它的组件
3.解压缩该预制体,这样才能在面板中修改组件
4.打开刚刚的代码编写的编辑器并输入预制体的名称并点击按钮
5.这样就能得到一个完整的UI了
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;
}