Live Sessions On UI

官方UI教程第2辑

---------------------------

1.The New UI

对4.6版本的UI系统的介绍 (...4.6!)

三种不同的UI效果对应的三种Canvas

 

非常详细复杂的讲了父Anchor和子Pivot的互相影响,这种设置主要是为了使UI适应各种屏幕尺寸比(所以最后平台移植时再说吧)

可参考该链接讲的很详细。

--------------------------------

2. Using the UI Tools

 

1. 利用Survival Shooter的游戏资源,给Player加了头像和生命条,蓝条(子弹数)。

 

2. 给每个Enemy加了头像和生命条

(每个被射击的Enemy会在游戏右上角显示该Enemy的头像和生命条,切换射击对象将切换对应头像&生命条)。

 

3.暂停游戏

在原来的HUDCanvas下新建Button命名为Pause Button。

 

再在Hierarchy下新建Canvas命名为PausedCanvas,新创建脚本命名为PauseManager,打开并编辑

 

然后把该脚本挂到PauseCanvas上。

在PauseCanvas下新建Panel,摁住shift把Panel调到适中大小,然后在Anchor Present里摁住shift+alt点击居中调整Panel到中心位置。

然后把对应的图片拖到Panel的Source Image里。

 

Panel下新建Button命名为Resume Button,拖入合适的Source Image把字体调整到合适。

复制Button命名为Quit Button并修改text。然后Anchor Present里修改两个Button,摁住Alt+Shift一个在左下角,一个在右下角。稍微再往上调整一下。

 

在两个Button下新加OnClick,把PauseCanvas拖进去,然后再选择脚本里对应的同名方法。

回到HUDCanvas的Pause Button下,新加OnClick把PauseCanvas拖进去,方法选择Pause()。

然后就可以运行游戏了(不需要把Panel或者PauseCanvas隐藏,它会在游戏运行开始自动隐藏...我也不知道为啥,见50:00)。

 

4. 调整音量大小的Slider

在PauseCanvas下新建Slider命名为Music Volume Slider,用来调整背景音乐音量。分别把FillArea,Fill和Handle的图改成对应的图。

摁住Alt拖动Slider大小,将左右对称的拉长Slider。

Panel下新建Text内容修改为:Music Volume,修改字体大小位置等。

复制Slider和Text,命名为FX Volume Slider,用来调整音效音量。拖动到合适的位置(选中这两个,摁住shift拖动会上下动,不会左右动)。

 

背景音乐的Slider下新加OnValueChanged,把BackgroundMusic 游戏对象拖进去。

BackgroundMusic:

 

选择AudioSource里的Volume。

 

 

特效的Slider同样把Player下的GunBarrelEnd拖入,选择Volume。

 

完毕。

----------------------------------------------

3.Game jam menu template

 

就是这样一个基本游戏设置的资产包的说明,跳过该教程。

完毕。

-------------------------------------------------------------------

4.Creating a scene selection menu

在此教程(2014.11.24, 4.6Beta)中,我们将创建一个可以选择加载关卡的UI界面

 

1.基础设置

教程中将导入Sample Assets(Beta),但该资源现在已不存在,所以我会用其他资源拼。

新建Text命名为NIGHT SKY

 

复制该Text组件,新建button命名为Level1 Button,在button的text里paste component as value,并调整位置。

 

新建脚本命名为LoadOnClick,挂在Canvas上,编辑:

 

level1 button新建事件,把Canvas拖进去

 

保存该场景命名为Main,新建场景命名为Level1

在该场景里新建text内容为Level1 was loaded.

打开Build Settings 把场景拖入,注意Main在前。

 

回到Main,播放测试,点击level1 button则加载了level1场景。因为Level1场景里几乎是空的,所以加载的很快。

 

接着新建场景了level2,添加若干Assets包里的模型,比如cube等,然后添加新Build Settings里。

 

回到Main,复制level1 Button,命名为Level2 Button,修改位置和内容。

 

播放测试,在教程里因为添加了很多加载慢的对象,所以大概花了5秒才加载出来。

通常我们做的游戏场景里都有很多东西,加载起来会很慢。玩家面对这种情况,比如点击加载第2场景,什么都没发生(要等5秒)于是玩家以为卡了,不停的点加载加载,boom!

所以要添加一个过场动画/过场图片。

 

2. 进阶功能

 

1.过场图片

一般添加过场动画/图片都是为了把button界面挡住,不让玩家不停的点击。

Main场景里新建Image命名为LoadingImage,设置为铺满屏幕,颜色为黑。再新建Text命名为LoadingText,修改内容为Loading。

Text设为Image的子对象,这样我们可以同时隐藏二者。

最后点击Image取消勾选,隐藏。

 

脚本里添加

 

保存后回到Unity把LoadingImage拖入引用。点击测试,可行。

 

2.切换场景时保留对象

一般切换场景时所有场景内的对象都销毁再加载新场景内的对象。有时我们需要在切换场景时保持某些对象一直存在(比如GameManager,背景音乐,某些UI等)。

这里我们将学习添加一个背景音乐,并在切换时保持。

 

Main里新建空对象,命名为BackgroundMusic,添加AudioSource组件,勾选PlayerOnAwake和Loop。随便拖入某段音频。

记得该音频取消勾选3D,并Apply。因为我们不想它随着相机的远近改变音量。

 

新建脚本命名为DontDestroy,挂在BackgroundMusic上。

 

点击测试,成功。

 

但比如level2场景我们想切换一个背景音乐。我们将使用OnLevelWasLoaded方法

 

3.场景切换时执行某些功能

该方法的定义

 

Roguelike2D里的使用

 

新建脚本命名为ChangeMusic,编辑

 

注意参考来源

 

另外:比如level2可以返回Main的话,我们会发现有两个背景音乐对象。解决这个问题的方法是一般首个场景0号为Persistent Scene(就像Adventure Game里一样)专门用来加载一系列Manager,这个场景永远不会切换回来,就避免了此类问题。

 

一般这种Persistent Scene切换其他场景不是从A→B,而是在Persistent上叠加其他场景,即Additive模式。

 

4.叠加其他场景

复制Button2,命名为button3,记得让levelimage在canvas的最底层以挡住所有其他元素。

新建脚本命名为LoadAdditive,编辑

 

在Canvas上挂上该脚本。

Button3上添加事件

 

保存当前场景,新建场景Scene3。

在场景3里添加一些对象以区分。需要注意的是,一个场景里只能有一个Audio Lisener,一般都挂在Main Camera上,所以把场景3的Main Camera去掉。(在实际游戏操作中,基场景Persistent Scene一般不添加任何Camera,所以其他场景里的Main Camera需要保存,但每次只叠加一个场景避免重复,叠加下一个场景B时需要把上一个场景A卸掉。)

把Scene3添加进Build Settings。

 

点击测试,成功叠加了level3(即又有Main场景元素,又有叠加场景元素)。

 

5.异步加载场景

异步加载场景的意思是在当前场景仍在播放状态下,背景式的加载另一个场景(比如加载进度条,进度条时当前场景,正在加载的场景则处于异步加载状态)。

LodingImage下新建Slider,取消勾选Interactable,删去Handle,填充颜色改为蓝色。

 

新建脚本命名为ClickToLoadAsync挂在Canvas上,打开并编辑

 

 

回到Unity,拖入Slider和Image的引用,把Button2的事件改为上面的方法。

 

比如先播放加载场景同时播放2秒的过场动画(商标),则可用

 

 

Hierarchy下隐藏Image,点击测试,成功。(只是我的场景内容太少了,所以几乎看不清就加载成功了)

 

还有在教程里说这个功能只用于Pro,目前好像是免费版也可以用。

 

完毕。

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值