zoukankan      html  css  js  c++  java
  • 一个挺好用的自己写的小插件(用与把一般的图片转换成预制)——UNITY3D

    首先 下载一个DLL文件,名字:System.Windows.Forms。

    然后把这个文件放在资源目录,位置随便。

    接着上代码 :

    using System.IO;
    using UnityEditor;
    using UnityEngine;
    using System.Windows.Forms;
    
    public class SpriteToPrefabs : MonoBehaviour
    {
    
        static private string OpenPath()//选择路径
        {
            string path = null;
            FolderBrowserDialog dialog = new FolderBrowserDialog();
            dialog.Description = "选择转换的文件";
            if (dialog.ShowDialog() == DialogResult.OK)
            {
                if (dialog.SelectedPath == "")
                {
                    print("你没有选择任何内容");
                }
                else
                {
                    DirectoryInfo wenjianjia = new DirectoryInfo(dialog.SelectedPath);
                    path = dialog.SelectedPath.Replace("\", "/");
    
                }
            }
            return path;
        }
        static private string SavePath()
        {
            string path = null;
            FolderBrowserDialog dialog = new FolderBrowserDialog();
            dialog.Description = "文件保存的目录";
            if (dialog.ShowDialog() == DialogResult.OK)
            {
                if (dialog.SelectedPath == "")
                {
                    print("你没有选择任何内容");
                }
                else
                {
                    DirectoryInfo wenjianjia = new DirectoryInfo(dialog.SelectedPath);
                    path = dialog.SelectedPath.Replace("\", "/");
    
                }
            }
            return path;
        }
    
        [UnityEditor.MenuItem("MyMenu/AtlasMaker")]//转换格式
        static private void MakeAtlas()
        {
            DirectoryInfo rootDirInfo = new DirectoryInfo(OpenPath());
            string spriteDir = SavePath();
    
            if (!Directory.Exists(spriteDir))
            {
                Directory.CreateDirectory(spriteDir);
            }
            foreach (DirectoryInfo dirInfo in rootDirInfo.GetDirectories())
            {
                foreach (FileInfo pngFile in dirInfo.GetFiles("*.png", SearchOption.AllDirectories))
                {
                    string allPath = pngFile.FullName;
                    string assetPath = allPath.Substring(allPath.IndexOf("Assets"));
                    //Sprite sprite = Resources.LoadAssetAtPath<Sprite>(assetPath);
                    Sprite sprite = AssetDatabase.LoadAssetAtPath<Sprite>(assetPath);
                    GameObject go = new GameObject(sprite.name);
                    go.AddComponent<SpriteRenderer>().sprite = sprite;
                    allPath = spriteDir + "/" + sprite.name + ".prefab";
                    string prefabPath = allPath.Substring(allPath.IndexOf("Assets"));
                    PrefabUtility.CreatePrefab(prefabPath, go);
                    GameObject.DestroyImmediate(go);
                }
            }
            Debug.Log("done");
        }
    
        
    }

    然后unity会多出一个栏“MyMenu”

    点进去会一个“AtlasMaker”按钮

    点击后出现一个选择文件路径栏

    选好路径第二次弹出就是要保存的预制Prefabs的路径!然后系统会自动转换,转换好的会出现done!

    至于这么做比打图集有什么优势这里不作说明!这还能扩展自动打包AB包功能!很好用!这个DLL文件百度很容易找到!

  • 相关阅读:
    Android home键和back键区别
    装饰器模式
    对象的序列化
    构建器问题
    finnally的一些用法
    LinkedList ArrayList测试2
    LinkedList ArrayList测试
    meizu调试遇到 的问题
    java和c#通过esb服务互调用组件
    .NET平台常用的框架整理
  • 原文地址:https://www.cnblogs.com/xxxtony/p/7638165.html
Copyright © 2011-2022 走看看