Unity中的插件分享

分享一下我写的一些插件

 

统计代码行数插件:

public class CountCodeLine
{
    [MenuItem("EGTools/CountCodeLine")]
    private static void PrintTotalLine()
    {
        string[] fileName = Directory.GetFiles("Assets", "*.cs", SearchOption.AllDirectories);
 
        int totalLine = 0;
        foreach (var temp in fileName)
        {
            int nowLine = 0;
            StreamReader sr = new StreamReader(temp);
            while (sr.ReadLine() != null)
            {
                nowLine++;
            }
 
            //文件名+文件行数
            //Debug.Log(String.Format("{0}——{1}", temp, nowLine));
 
            totalLine += nowLine;
        }
 
        Debug.Log(String.Format("code line:{0}", totalLine));
    }
}

把这个脚本放到Editor目录下就可了。

 

模型解析动画打ab包插件:

能够自动解析模型带的动画,并自动切片动画,创建动画状态机,打包ab包。【要求:如果模型带动画,则要求模型的根路径下带amPa空物体,在此空物体下,设置新的空物体,例如,模型带1个动画,则在amPa下需要新建1个空物体:动画名称_参数名称_起始帧_终止帧_0            最后的0或1代表是否循环播放,1代表是,0代表不是】插件地址文章最下面。

 

Json编辑插件:

可以在Unity里新建打开Json表进行编辑修改,附带合法性检测,比如id重复,类型不匹配等等。插件地址文章最下面。

 

根据Json生成c#类,并生成解析代码:

图中的Json如下:

{
  "code": "200",
  "data": {
    "LstBook": [
      {
        "id": 1,
        "coverImg": "机械制图b1c114ce-c167-4f64-83c3-378a208f7847.jpg",
        "author": "果连成",
        "publisher": "中国劳动社会保障出版社",
        "bookName": "机械制图",
        "summary": "本书主要内容包括:制图基本知识与技能,正投影作图基础,立体表面交线的投影作图,轴测图,组合体,机械图样的基本表示法,机械图样的特殊表示法,零件图,装配图,零部件测绘,金属结构图、焊接图和展开图等。"
      },
      {
        "id": 24,
        "coverImg": "液压传动与气动技术2b67dfc9-bfba-4168-ae00-39cca0d60ff1.png",
        "author": "周晓峰",
        "publisher": "中国劳动社会保障出版社",
        "bookName": "液压传动与气动技术",
        "summary": "本书主要内容包括:液压传动基础知识、液压传动动力原件和执行元件、液压传动控制元件与基本回路、液压传动系统分析与维护、气压传动基础知识、气压传动控制元件与单缸控制回路、气压传动控制元件与双缸控制回路、气压传动系统分析与维护等"
      },
      {
        "id": 28,
        "coverImg": "395ab15c-8b73-47b6-b8d4-c46e0b007aee.jpg",
        "author": "王长忠",
        "publisher": "中国劳动社会保障出版社",
        "bookName": "焊工工艺与技能训练",
        "summary": "本书的主要内容有:焊接基础知识、气焊与气割、焊条电弧焊、埋弧自动焊与碳弧气刨、CO2气体保护焊、钨极氩弧焊、电阻焊、等离子弧焊与切割及其他焊接技术、常用金属材料的焊接"
      },
      {
        "id": 42,
        "coverImg": "ac4c6781-c145-4208-8adc-b42e26ced8b0.jpg",
        "author": "蒋增福",
        "publisher": "中国劳动社会保障出版社",
        "bookName": "机修钳工技能训练",
        "summary": "本书的主要内容有:基础知识技能训练、划线、钳工常用加工方法及刀具、孔与螺纹加工、设备装修的基本知识、固定连接的装配与修理、常用传动机构的装配与修理、轴承与轴组的装配与修理、机床导轨的检测与修理、卧式车床的结构与调整、卧式车床修理工艺、牛头刨床的修理"
      },
      {
        "id": 80,
        "coverImg": "冷作工工艺与技能训练79048f62-aa5f-46bd-ad25-25e27f324003.png",
        "author": "孟广斌 编",
        "publisher": "中国劳动社会保障出版社",
        "bookName": "冷作工工艺与技能训练",
        "summary": "《冷作工工艺与技能训练》主要内容包括:矫正、放样、下料、零件预加工、弯形与压延、装配、连接等工艺知识和技能训练课题。此外,还安排了一些复合作业,以提高学生处理综合问题的能力。"
      }
    ]
  },
  "msg": "操作成功",
  "success": true
}

是我们后台服务器返回的数据,图中生成的代码如下:

public class A
{
    public int code;
    public B data;
    public string msg;
    public bool success;

    public A()
    {
    }
    public A(string jsonStr)
    {
        JsonObject obj = SimpleJson.SimpleJson.DeserializeObject<JsonObject>(jsonStr);
        if (obj.ContainsKey("code"))
        {
            code = Convert.ToInt32(obj["code"]);
        }
        if (obj.ContainsKey("data"))
        {
            data = new B(obj["data"].ToString());
        }
        if (obj.ContainsKey("msg"))
        {
            msg = Convert.ToString(obj["msg"]);
        }
        if (obj.ContainsKey("success"))
        {
            success = Convert.ToBoolean(obj["success"]);
        }
    }
}

public class B
{
    public List<C> LstBook;

    public B()
    {
    }
    public B(string jsonStr)
    {
        JsonObject obj = SimpleJson.SimpleJson.DeserializeObject<JsonObject>(jsonStr);
        if (obj.ContainsKey("LstBook"))
        {
            LstBook = new List<C>();
            JsonArray arr0 = SimpleJson.SimpleJson.DeserializeObject<JsonArray>(obj["LstBook"].ToString());
            foreach (JsonObject jobj0 in arr0)
            {
                C c = new C(jobj0.ToString());
                LstBook.Add(c);
            }
        }
    }
}

public class C
{
    public int id;
    public string coverImg;
    public string author;
    public string publisher;
    public string bookName;
    public string summary;

    public C()
    {
    }
    public C(string jsonStr)
    {
        JsonObject obj = SimpleJson.SimpleJson.DeserializeObject<JsonObject>(jsonStr);
        if (obj.ContainsKey("id"))
        {
            id = Convert.ToInt32(obj["id"]);
        }
        if (obj.ContainsKey("coverImg"))
        {
            coverImg = Convert.ToString(obj["coverImg"]);
        }
        if (obj.ContainsKey("author"))
        {
            author = Convert.ToString(obj["author"]);
        }
        if (obj.ContainsKey("publisher"))
        {
            publisher = Convert.ToString(obj["publisher"]);
        }
        if (obj.ContainsKey("bookName"))
        {
            bookName = Convert.ToString(obj["bookName"]);
        }
        if (obj.ContainsKey("summary"))
        {
            summary = Convert.ToString(obj["summary"]);
        }
    }
}

public A Deserialize(string jsonStr)
{
    A a = new A(jsonStr);
    return a;
}

前几个都是c#类,最后一个是解析函数,不需要也可以删除。c#类名需要手动修改。

 

UI脚本生成插件:

能够根据UI物体自动生成脚本,在选中一个UI物体后,界面自动解析最可能的数据类型并选中,当然你也可以点击修改数据类型,做了类型优先级判断,比如当一个物体上既有button组件又有Image组件,优先Button组件被选中,另外,当一个Text或者Image组件的父物体存在Button等更高级组件时,默认该物体不显示,如图上展示的就是默认选中状态,被选中的物体都会参与代码的生成。上图演示的生成后的代码如下:

using System.Collections;
using System.Collections.Generic;
using EG;
using DG.Tweening;
using UnityEngine;
using UnityEngine.UI;

public class TalkUI : UIPage
{
    private Button bg;
    private Image model;
    private Button closeBtn;
    private Transform ModelPa;

    public override void InitPage()
    {
        uiPath = "UI/TalkUI";
        uiType = UIType.Normal;
    }

    public void Awake()
    {
        bg = gameObject.transform.Find("bg").GetComponent<Button>();
        bg.onClick.AddListener(bgClick);
        model = gameObject.transform.Find("model").GetComponent<Image>();
        closeBtn = gameObject.transform.Find("closeBtn").GetComponent<Button>();
        closeBtn.onClick.AddListener(closeBtnClick);
        ModelPa = gameObject.transform.Find("ModelPa");
    }

    public override void OnShowPage()
    {
    }

    public override void OnClosePage()
    {
    }

    public override void OnFocusPage()
    {
    }

    public override void OnLostFocusPage()
    {
    }

    public override void OnActive()
    {
        if (!gameObject.activeSelf)
        {
            base.OnActive();
            gameObject.transform.localPosition = Vector3.up * 1080;
            gameObject.transform.DOLocalMove(Vector3.down * 200, 0.1f).OnComplete(() =>
            {
                gameObject.transform.DOLocalMove(Vector3.up * 100, 0.1f).OnComplete(() =>
                {
                    gameObject.transform.DOLocalMove(Vector3.zero, 0.1f);
                });
            });
        }
    }

    public override void OnHide()
    {
        if (gameObject.activeSelf)
        {
            gameObject.transform.DOLocalMove(Vector3.down * 200, 0.1f).OnComplete(() =>
            {
                gameObject.transform.DOLocalMove(Vector3.up * 1080, 0.1f).OnComplete(() => { base.OnHide(); });
            });
        }
    }

    private void bgClick()
    {
    }

    private void closeBtnClick()
    {
    }
}

 

 

上面这些插件的地址是:https://download.csdn.net/download/kk041/12772541

https://download.csdn.net/download/kk041/12772574

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值