又开始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();
}
这部分的效果图和 后面弹框的功能截一起了
先写这么多吧 回家!