unity psb文件生成UI

psb文件生成UI

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

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方法最后一段添加

 //修改为UIRectTransform 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;


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部