在动画制作和游戏制作中间摇摆

一.NDATA与NGUI的结合

NDATA是一个符合.net的mvvm模型的ngui辅助插件,,将界面与逻辑完全分割开

最为方便的是它的自动数据绑定功能,在创建列表式数据的界面和动态的数据是十分有效

目前我用它的这个功能做过两个系统,一个是卡牌的自动数据刷新(双向数据绑定)

还有一个地图生成和地图上元素的自动更新

几个比较关键的组件

NGUIRootContext :这个组件负责把ndata的数据与ngui数据做绑定(绑定的数据格式看官网范例即可,有模板,很方便)

NGUIVisibleBinding:自我感觉最重要的组件,控制NGUI空间的显示隐藏(也包括NGUI按钮的碰撞器开关),不仅支持bool 类型的判断,也支持数值和字符串类型的值控制组件的显示隐藏,善用这个,超级方便,能做好多事情

OnClickBinding:点击按钮后触发,根据path执行你选定的方法,在NGUI3.0之前很方便,当然现在也很方便,因为执行方法的路径一般都是与组件数据在同一个脚本,访问起来非常方便,NGUI3.0自带的反射技术执行方法也不错,而不是以前的sendMessage了

二.NGUI3.0

NGUI升级到3.0以后更新了好多东西

首先最值得庆祝的就是depth终于完全起作用了,而不需要在调整z轴来控制元件的前后关系了,很大的进步啊,记得上个项目的z轴值最后都调到快-800了

然后是它的触发函数的方法变了,以前按钮触发方法是sendMessage或者自己在脚本上添加EventListener,而现在只要拖拽脚本所在object,会动态探测出所有public的方法

新的事件触发脚本,EventDelegate,具体代码还没看

EventDelegate.Add();可以添加一个UI事件,加一个方法,在事件触发时,即可自动执行方法

新的uipanel组件,可以非常准确的告诉你一共有几个DrawCall,并且这些DrawCall是由什么组件造成的,在优化的时候非常方便

创建sprite,label都有快捷键了alt shift+S/L,很方便

调整depth也有了快捷键,受这个启发,在scene视图里面添加了几个按钮,在调整UI的时候很方便

代码如下,放在UISpriteInspector里面的OnSceneGUI

public override void OnSceneGUI (){//UILabel currentLabel = (UILabel)Selection.activeObject;UISprite currentLabel = (UISprite)target;Vector3 position = currentLabel.transform.position;Handles.color = Color.red;Handles.Label (position+ Vector3.right*0.4f,(currentLabel.name+"Positon IS:"+currentLabel.transform.localPosition.ToString()),new GUIStyle(){fontSize = 20 });Handles.BeginGUI ();Vector2 ButtonPos = HandleUtility.WorldToGUIPoint (position+ (new Vector3(0.4f,0.3f)));//Vector2 ButtonPos = HandleUtility.WorldToGUIPoint (position);GUILayout.BeginArea (new Rect(ButtonPos.x,ButtonPos.y+1,200,200));if (GUILayout.Button ("ResetPositon.")) {if(!EditorApplication.isPlaying){Undo.RegisterSceneUndo("BackPos");}Vector3 temp = currentLabel.transform.position ;currentLabel.transform.position = new Vector3 (0f,temp.y,temp.z);}if (GUILayout.Button ("Depth++.")) {if(!EditorApplication.isPlaying){Undo.RegisterSceneUndo("BackPos");}currentLabel.depth += 1;}if (GUILayout.Button ("Depth–.")) {if(!EditorApplication.isPlaying){Undo.RegisterSceneUndo("BackPos");}currentLabel.depth -= 1;}GUILayout.EndArea ();Handles.EndGUI ();base.OnSceneGUI ();}效果是这样子的

当你选中控件的时候,会子啊右侧出现一个位置信息和三个按钮,第一个是是x轴归零(对位用的),后两个就是让depth加和减用的

三.暂时没有

坚韧是成功的一大要素,只要在门上敲得够久够大声,终会把人唤醒的。

在动画制作和游戏制作中间摇摆

相关文章:

你感兴趣的文章:

标签云: