您的位置:首页 > 移动开发 > Unity3D

Unity处女作学习总结--第一天

2017-08-22 21:42 323 查看

写在开始:本人试做是一个2D RPG游戏(可能会因为素材的缺少而变味,但是想要实现袖珍的完整系统),想要实现一般RPG的UI系统,生命属性系统,装备技能系统。处女作嘛,难免可能对概念的阐述有所偏差,还请海涵。

GUI的处理(这里的GUI包括血条,地图等HUD(Head Up Display)和像开始按钮,物品栏按钮之类的总和。)

首先,在最开始,对于GUI的处理就很是困惑,就我所知,一般有两种方式实现,一种是脚本绘制型,一种是编辑器编辑型。

脚本编辑型:

void OnGUI(){
// 指定位置
if(GUI.Button(new Rect(0,0,100,100),"Start Game")){
// do something;
}
// 由GUILayout 自己计算位置,生成按钮
if(GUILayout.Button("This is a layout button")){
// do something;
}
}


编辑器编辑型:

在GameObject -> Create -> UI -> Button。然后编辑器去拖拉 锚点(Anchors),大小,轴点(Pivot)。

然后在 OnClick()函数中指定对象,指定函数。每个函数只能传递一个参数,如果要多传参数,那么多加几个函数对象,指定参数。

指定的函数执行顺序为从上到下,因此可以合理控制参数顺序。

其他的同理,只不过多一些指定的Sprite 之类的

这两种各有优劣,本来我学的是通过脚本编辑型,这种方式通过脚本控制起来非常的顺手,基本很少涉及Project 中对象的 引用问题。但是不太好的就是他的屏幕适应性太差,比如说你在1920 * 1080 屏幕下建的窗口,按钮,在其他分辨率下显示效果就非常糟糕。如果已经有确定的屏幕分辨率 ,这种方法倒是相当之棒。

而编辑器编辑则是通过指定位置,大小,解决了分辨率问题,但是和脚本的互动就有点不尽人意。

最后我选择的是绝大多数采用编辑器编辑,像固定的UI元素,按钮之类的。对于数量非常多的UI元素(如物品格子),使用脚本编辑。

当前成果:建立了一个生命栏,工具栏(人物,物品,设定等按钮,交互未完成),开始菜单。

UI元素交互:

这里使用的角色是 Unity标准库中的2D 角色(CharacterRobotBoy)。本身自带摄像机脚本,运动脚本(都非常简单)。关于运动动画那一块,主要的也就是参数的传递,接收等,没有什么太麻烦的,就对角色这一块先不管。

开始编写代码,首先开始的设想是将所有的UI事件放到一个脚本中(MyUIEvent.cs),这样一个脚本就能处理从开始菜单、游戏菜单、暂停菜单。

(后来测试发现这不是很合理,因为不同的场景往往需要不同的UI对象引用,如果所有的场景UI都用一个 脚本的话,在切换场景之后就可能造成 NullReference Exception->空引用异常。所以后来为单独设计UI)。

在按钮的通信上,通常事件的行为是触发型的,一个事件的发生可能会对多个对象造成影响,为了兼顾以后可能增加的功能,对于按钮使用事件委托机制,暂时让他实现按钮点击打印信息。

对于开始菜单,

开始按钮只是做了一个加载指定场景的功能。

退出按钮编辑器模式下不可用。

第一天~~~~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  unity ui 游戏