unity小工具

做一个简单的记录。

参考文章如下:

https://www.cnblogs.com/jqg-aliang/p/4834488.html

https://www.jianshu.com/p/f165d90a491f

http://blog.csdn.net/u011536487/article/details/41800805

达到的效果是:读文本拿到字符串,将字符串转换成16进制数,找到需要的prefab为其设置颜色。

代码如下:

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


public class ChangeLineColor : MonoBehaviour {
    private static GameObject targetObj;




    [MenuItem("ChangeLineColor/ChangeLineColor")]
    public static void ChangeColor() {
        targetObj = Selection.activeGameObject;
        int index = 0;
        List colorList = ReadFileList(Application.dataPath, "line_color.txt");
        //for (int i = 0; i < colorList.Count; i++)
        //{
        //    print(" colorList  " + colorList[i]);   
        //}
        foreach (Transform child in targetObj.transform)
        {
            foreach (Transform child2 in child.transform)
            {
                child2.GetComponent().color = HexToColor(colorList[index]);
            }
            index++;
           // print("index " + index + " colorList.Count " + colorList.Count);
            if (index >= colorList.Count)
                index = 0;
        }
      
        
    }


    ///


    /// hex转换到color
    ///

    ///
    ///
    public static Color HexToColor(string hex)
    {
        byte br = byte.Parse(hex.Substring(0, 2), System.Globalization.NumberStyles.HexNumber);
        byte bg = byte.Parse(hex.Substring(2, 2), System.Globalization.NumberStyles.HexNumber);
        byte bb = byte.Parse(hex.Substring(4, 2), System.Globalization.NumberStyles.HexNumber);
        byte cc = byte.Parse(hex.Substring(6, 2), System.Globalization.NumberStyles.HexNumber);
        float r = br / 255f;
        float g = bg / 255f;
        float b = bb / 255f;
        float a = cc / 255f;
        return new Color(r, g, b, a);
    }


    public static List ReadFileList(string file_path, string file_name)
    {
        StreamReader sr;
        if (File.Exists(file_path + "//" + file_name))
        {
            sr = File.OpenText(file_path + "//" + file_name);
        }
        else
        {
            Debug.LogWarning("Not find files!");
            return null;
        }
        List list = new List();
        string str;
        while ((str = sr.ReadLine()) != null)
            list.Add(str);//加上str的临时变量是为了避免sr.ReadLine()在一次循环内执行两次  
        sr.Close();
        sr.Dispose();
        return list;
    }  


}



你可能感兴趣的:(unity小工具)