zoukankan      html  css  js  c++  java
  • unity 工具开发基础

    using System.Collections;
    using System.Collections.Generic;
    using System.IO;
    using System.Text;
    using UnityEngine;
    using UnityEditor;
    /// <summary>
    /// Unity基础工具功能
    /// priority菜单项显示排序
    /// </summary>
    public class TestEditor : MonoBehaviour {
    
        [MenuItem("GameObject/获取选中的物体名称", priority = 0)]
        static string GetSelectObject(){
            GameObject _selectObject = Selection.gameObjects [0];
            Debug.Log (_selectObject.name);
            return _selectObject.name;
        }
    
        [MenuItem("GameObject/获取Project视图中的文件和文件夹路径", priority = 1)]
        static string GetSelectFile(){
            string[] guidArray = Selection.assetGUIDs;//从meta文件里面取得id
            string selectName = AssetDatabase.GUIDToAssetPath (guidArray [0]);//根据id取得路径
            string path = Application.dataPath.Substring (0, Application.dataPath.Length - 6);
            Debug.Log (path + selectName);
            return path + selectName;
        }
    
        [MenuItem("GameObject/创建新文件", priority = 0)]
        static void CreateNewFile(){
            File.WriteAllText (GetSelectFile () + "/UI_" + GetSelectObject () + ".lua", "xxx文本内容xxx", Encoding.UTF8);
            AssetDatabase.Refresh ();
        }
    
        [MenuItem("GameObject/创建文件夹", priority = 0)]
        static void CreateFolder(){
            Directory.CreateDirectory(Application.dataPath + "/文件夹名称");
            AssetDatabase.Refresh ();
        }
    }

    放Editor文件下

    editor修改prefab    https://cnblogs.com/klkucan/p/4934518.html

    -10-23新增

        [MenuItem("GameObject/获取用户名和当前时间", priority = 0)]
        static void GetUserName(){
            string username = System.Environment.UserName;
            var time = System.DateTime.Now;
            Debug.Log (username);
            Debug.Log (time);
        }
    
        [MenuItem("GameObject/打印选择物体的子物体路径", priority = 0)]
        static void GetChildPath()
        {
            Transform _selectObject = Selection.gameObjects[0].transform;
            GetChildObject (_selectObject, _selectObject.name);
        }
    
        static void GetChildObject(Transform trans, string path){
            for(int i = 0; i < trans.childCount; i++){
                Transform child = trans.GetChild (i);
                string comPath = path + "_" + child.name;
                GetChildObject (child, comPath);
            }
            //输出条件:最末端物体 (自由更改)
            if(trans.childCount == 0){
                Debug.Log (path);
            }
        }

     打印 路径 和 名字

        static void CreateUI(){
            string[] guidArray = Selection.assetGUIDs;
            foreach (var item in guidArray)
            {
                //打印路径
                string selecetFloder = AssetDatabase.GUIDToAssetPath(item);
                Debug.Log(selecetFloder);
                //打印名字
                string selectName = Path.GetFileName(selecetFloder);
                Debug.Log(selectName);
            }
        }

    遍历文件夹下的包括子文件夹的后缀带有xx文件

    以lua为例

        [MenuItem("Assets/check",priority = 1)]
        static void CheckChinese()
        {
            string[] guidArray = Selection.assetGUIDs;
            foreach (var item in guidArray)
            {
                string selectFloder = AssetDatabase.GUIDToAssetPath(item);
                DirectoryInfo root = new DirectoryInfo(selectFloder);
                GetFloder(root);
            }
        }
    
        static void GetFloder(DirectoryInfo root)
        {
            GetFile(root);
            //查找子文件夹
            DirectoryInfo[] array = root.GetDirectories();
            //Debug.Log(root);
            foreach (DirectoryInfo item in array)
            {
                GetFloder(item);
            }
        }
    
        static void GetFile(DirectoryInfo root)
        {
            //DirectoryInfo root = new DirectoryInfo(path);
            FileInfo[] fileDic = root.GetFiles();
            foreach (var file in fileDic)
            {
                //sDebug.Log(file);
                if (file.FullName.EndsWith("lua"))
                {
                    Debug.Log("-------------" + file.Name);
                }
            }
        }
    //获取指定类型资源的路径
    string[] spritesPath =
    AssetDatabase.FindAssets("t:Sprite", new string[] {Application.dataPath + "/Resources/Sprites/Cloud"});


    --------------------------------2019-8-28------------------------------------
    代码设置Animator的参数,animator 转 AnimatorController
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using UnityEditor;
    using Spine.Unity;
    using UnityEditor.Animations;
    
    /// <summary>
    /// 制作怪物预制体
    /// </summary>
    public class CreateMonsterPrefab {
    
        [MenuItem("GameObject/添加怪物Animator参数", priority = 0)]
        static void SetACPara()
        {
            Debug.Log("设置参数");
            GameObject _selectObject = Selection.gameObjects[0];
            AnimatorController controller = _selectObject.GetComponent<Animator>().runtimeAnimatorController as AnimatorController;
    
            AddParameter(controller, "Die", AnimatorControllerParameterType.Bool);
            AddParameter(controller, "Move", AnimatorControllerParameterType.Bool);
            AddParameter(controller, "Hurt", AnimatorControllerParameterType.Bool);
            AddParameter(controller, "IsDead", AnimatorControllerParameterType.Bool);
            AddParameter(controller, "Speed", AnimatorControllerParameterType.Float);
            AddParameter(controller, "Vertigo", AnimatorControllerParameterType.Bool);
            AddParameter(controller, "Execute", AnimatorControllerParameterType.Bool);
            AddParameter(controller, "IsMoveModeEnable", AnimatorControllerParameterType.Bool);
            AddParameter(controller, "Frozen", AnimatorControllerParameterType.Bool);
            AddParameter(controller, "Warning", AnimatorControllerParameterType.Bool);
            AddParameter(controller, "IsWarning", AnimatorControllerParameterType.Trigger);
            AddParameter(controller, "IsAtk", AnimatorControllerParameterType.Bool);
            AddParameter(controller, "Attack", AnimatorControllerParameterType.Int);
            AddParameter(controller, "AtkType", AnimatorControllerParameterType.Int);
            AddParameter(controller, "MoveType", AnimatorControllerParameterType.Int);
            AddParameter(controller, "AttackType", AnimatorControllerParameterType.Int);
    
            Debug.Log("设置成功");
        }
    
        //添加
        static void AddParameter(AnimatorController controller, string name, AnimatorControllerParameterType _type)
        {
            if (!CheckParameters(controller, name))
            {
                controller.AddParameter(name, _type);
            }
        }
    
        //检查
        static bool CheckParameters(AnimatorController controller, string parName)
        {
            foreach (var item in controller.parameters)
            {
                if (item.name.Equals(parName))
                {
                    return true;
                }
            }
            return false;
        }
    }
    不错的教程:
    https://blog.csdn.net/q764424567/article/details/80908614



  • 相关阅读:
    net core 使用 rabbitmq
    asp.net core WebApi 返回 HttpResponseMessage
    asp.net core 2.1 WebApi 快速入门
    JQuery EasyUI combobox动态添加option
    php截取字符去掉最后一个字符
    JQuery EasyUI Combobox的onChange事件
    对于不返回任何键列信息的 selectcommand 不支持 updatecommand 的动态 sql 生成
    Access2007 操作或事件已被禁用模式阻止解决办法
    Easyui 中 Tabsr的常用方法
    Win 7 IE11不能下载文件,右键另存为也不行
  • 原文地址:https://www.cnblogs.com/sanyejun/p/9828589.html
Copyright © 2011-2022 走看看