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<string> 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<Image>().color = HexToColor(colorList[index]);
            }
            index++;
           // print("index " + index + " colorList.Count " + colorList.Count);
            if (index >= colorList.Count)
                index = 0;
        }
      
        
    }


    /// <summary>
    /// hex转换到color
    /// </summary>
    /// <param name="hex"></param>
    /// <returns></returns>
    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<string> 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<string> list = new List<string>();
        string str;
        while ((str = sr.ReadLine()) != null)
            list.Add(str);//加上str的临时变量是为了避免sr.ReadLine()在一次循环内执行两次  
        sr.Close();
        sr.Dispose();
        return list;
    }  


}



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值