Unity3D游戏开发框架-创建txt文件,管理prefab路径

发表于2018-09-10
评论0 2.4k浏览
上篇内容给大家介绍了Unity3d游戏开发框架中标志量,数学管理类,时间管理,Log日志管理这几个部分的内容,本篇继续给大家介绍下Unity3D游戏开发框架系列,来看看如何去创建txt文件,管理管理prefab路径。

新建C#脚本文件:CreateResini,这里没有继承MonoBehaviour
using UnityEngine;
using System.Collections;
using UnityEditor;
using System.IO;
using System.Collections.Generic;
public class CreateResini  
{
    [MenuItem("TestMenu/CreateResIni")]
    public static void Createini()
    {
        Dictionary<string, string> dic = new Dictionary<string, string>();
        string pathRes = Application.dataPath +"/Resources/";
        string pathIni = pathRes + "/res.txt";
        if (File.Exists(pathIni))
        {
            File.Delete(pathIni);
        }
        CreateResInfo(pathRes, ref dic);
        List<string> list = new List<string>();
        foreach(KeyValuePair<string,string> keyValue in dic)
        {
            list.Add(keyValue.Key +"="+keyValue.Value);
        }
        File.WriteAllLines(pathRes +"/res.txt",list.ToArray());
        Log.Debug("生成完毕 ");
        AssetDatabase.Refresh();
    }
    public static void CreateResInfo(string path,ref Dictionary<string,string>dic)
    {
        DirectoryInfo dir = new DirectoryInfo(path);
        if (!dir.Exists)
        {
            return;
        }
        FileInfo[] files = dir.GetFiles();
        for (int i = 0; i < files.Length;i++ )
        {
            FileInfo info = files[i];
            if (!(info.Name.IndexOf(".meta",0) > 0))
            {
                string pathdir = info.FullName.Replace("\\","/")
                    .Replace((Application.dataPath + "/Resources/"), "")
                    .Replace(info.Name, "").TrimEnd('/');
                string fileName = Path.GetFileNameWithoutExtension(info.Name);
                Debug.Log("fileName =" + fileName);
                if (!dic.ContainsKey(info.Name))
                {
                    dic.Add(fileName, pathdir);
                }
                else
                {
                    Log.Error("存在相同的资源名称 名称为:" + info.Name + "/path1=" + dic[info.Name] + "/ path2 =" + pathdir);
                }
            }
        }
        DirectoryInfo[] dirs = dir.GetDirectories();
        if (dirs.Length > 0)
        {
            for (int i = 0; i < dirs.Length;i++ )
            {
                string tempPath = Path.Combine(path, dirs[i].Name);
                CreateResInfo(tempPath, ref dic);
            }
        }
    }
}
来自:https://blog.csdn.net/u013108312/article/details/52493799

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引

0个评论