淘先锋技术网

首页 1 2 3 4 5 6 7
      又开始Unity的学习生涯,中间转去写Cocos2dX的回合制卡牌的战斗逻辑,写了一年多也厌倦了,自己心里还是想继续Unity,而且在公司的以后工作趋势也不是我想走的路,于是毅然决然的选择了离职。转而又返回到了Unity的道路上,这里非常感谢我的老大并没有因为我的菜而嫌弃我,反而耐心的指导,指出我在之前写代码时留下的坏毛病,虽然对我很严格,但这样的不正是我一个改正自己,提高自己的一个机会,我一定要好好把握!之前写代码一直都很浮躁,这点感觉不改掉的话以后的路会更难走,不只是职业更是人生。俗话说,不积跬步无以至千里,欲速则不达,知识都是一点点积累起来的,急于求成更是拦路虎。这个就只能靠自己的自觉一点点的改。书归正传,这篇文章会一直更新关于编辑器开发相关的内容。算是自己学习过程的一点点的积累吧。

打开预制体模式

  unity2018 有一个新的预制体模式,那么如何在Unity编辑器中打开预制体模式呢?
  其中 prefabPath就是 预制体在project中的路径,AssetDatabase.LoadAssetAtPath<GameObject>() 通过prefab路径加载prefab  通过AssetDatabase.OpenAsset 打开预制体模式。
            GameObject go = AssetDatabase.LoadAssetAtPath<GameObject>(prefabPath);
            AssetDatabase.OpenAsset(go);

点击按钮弹出下拉菜单

这算是把 button和下拉菜单组合起来实现的一个功能。之前在网上查的基本都是 Popup、IntPopup、EnumPopup之类的下拉菜单。但是这类菜单只能单独用,并不能和button组合起来用。后来我找到了
GenericMenu 这个类 然后再去搜索,发现这类的博客很多,看来还是自己搜的关键词不对。但是网上关于编辑器相关的unity源码的解释真的非常之少,更多的还是要自己一点点的去啃源码。话不多说,直接上代码

		string itemStr = "aaa";
	    static readonly string[] testType = {
	        "aaa",
	        "bb",
	        "vcvc"
	    };
		
        //实现点击按钮 展开下拉菜单的功能
        if (GUILayout.Button("打开菜单", GUILayout.Width(100)))
        {
            GenericMenu genericMenu = new GenericMenu(); //实例化一个菜单
            for(int i=0, intCnt = testType.Length; i < intCnt; ++i)
            {
                if (string.IsNullOrEmpty(testType[i]))
                    continue;

                AddItemValue(genericMenu, testType[i]);
            }
            genericMenu.ShowAsContext(); //显示菜单内容
        }
        
        //添加下拉菜单中的item
	    private void AddItemValue( GenericMenu menu, string type)
	    {
	        menu.AddItem(new GUIContent(type), itemStr.Equals(type), OnValueSelected, type);
	    }
	    //当前选中的type
	    private void OnValueSelected(object type)
	    {
	        itemStr = type.ToString();
	    }
        
        

这部分的效果图和 后面弹框的功能截一起了
在这里插入图片描述
先写这么多吧 回家!