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



  • 相关阅读:
    一句sql语句删除重复记录
    Remoting测试
    关于委托
    遍历打印文件夹中的word文档
    c# string类型的一个理解误区
    viewstate
    依赖注入与工厂模式Demo
    memcache配置实践
    201732 C#链接数据库实现登陆
    观察者设计模式[伪]
  • 原文地址:https://www.cnblogs.com/sanyejun/p/9828589.html
Copyright © 2011-2022 走看看