2019-09-06 17:07:06 w953530843 阅读数 289
  • 丑小鸭历险记——趣味玩转unity2d游戏开发(下)

    故事简介 丑小鸭生来就很丑,谁都不喜欢它,从小被其他鸭子欺负。它无奈离开了妈妈,拿上一把猎枪,独自流浪,风餐露宿。每当遇到各种怪物而子弹不够用时,丑小鸭只能通过自己的血肉之躯踩死怪物。路上只能靠水果和蔬菜维持体力,无聊时也能抬头数星星。翻山越岭,逢水架桥,勇闯空中栈道和独木桥,踩过蹦床,躲过电锯,钻过加农炮,坐过火箭,穿过枪林弹雨,在极度艰苦的条件下大战终极BOSS。最终,丑小鸭占领了一座豪华城堡,里面住着它心仪的白富美(其实也是个丑小鸭),它在夜色降临之前,轻轻关上门,打开灯,结束了流浪生涯,此时天空绽放绚烂的烟花,拉开幸福生活的序幕...... 这个故事告诉我们:只要你肯奋斗,我命由我不由天 时长 课程分为上下两部,共64节课(21.1小时) 其中,上部29节课(8.5小时),下部35节课(12.6小时) 课程特色 * 对初学者友好,初次遇到新技术会详细讲解 * 全程直播,坚决不在直播外偷偷修改 * 展示所有细节,手把手教学 * 游戏元素完整丰富,共3张地图18个关卡 * 代码和文档开源,github托管地址 https://github.com/sailings/DuckAdventure * 完善的售后支持 涵盖实战中常用的知识点 * Physics,刚体,碰撞,弹簧体 * Mecanim,动画状态机,动画融合,动画层 * Animation,动画编辑与录制 * 单例模式 * 协程 * Dotween * 粒子特效 * 射线检测 * 键盘和移动端输入 * Cinemachine相机跟随,Confiner扩展 * UGUI常见控件,HUD * 屏幕自适应 * 地图与关卡解锁 * 关卡滑动 * 背景滚动 * 子弹轨迹计算 * 音效管理 * 场景编辑 * 数据及上下文存储 大纲 丑小鸭历险记——趣味玩转unity2d游戏开发(下)   1.背景设置原理解析 2.背景设置以及云彩,山,树的滚动 3.游戏状态菜单 4.暂停、恢复、重新开始 5.主菜单的状态切换,地图选择 6.地图解锁 7.关卡列表展示 8.关卡列表左右滑动 9.关卡进入,解锁,关卡的最佳成绩设置 10.通关界面UI设计以及显示 11.通关界面的数值更新、加载下一关 12.通关界面动画效果 13.移动端输入控制 14.音效(上) 15.音效(下) 16.场景整理与规划,总分计算,地形编辑 17.关卡W1-1(丛林) 18.关卡W1-2 19.关卡W1-3 20.关卡W1-4 21.关卡W1-5 22.关卡W1-6 23.关卡W1-7 24.关卡W1-8 25.关卡W1-9 26.关卡W1-10 27.关卡W1-11 28.关卡W1-12 29.关卡W2-1(荒漠) 30.关卡W2-2 31.关卡W2-3 32.关卡W3-1(冰雪) 33.关卡W3-2 34.关卡W3-3 35.游戏打包、课程总结

    343 人正在学习 去看看 洪青霞

场景切换,例:主界面副本面板切换到副本场景,副本场景点击返回,回到主页面.

使用场景切换,首先引入命名空间:using UnityEngine.SceneManagement;

使用前提需要将 场景加载到文件-生成位置 File - Build Settings

将场景全部拖拽到 Scenes in build

同步加载:
在这里插入图片描述

异步加载:
首先同样引入命名空间等操作同上

在这里插入图片描述

2017-04-14 11:06:40 yongh701 阅读数 12788
  • 丑小鸭历险记——趣味玩转unity2d游戏开发(下)

    故事简介 丑小鸭生来就很丑,谁都不喜欢它,从小被其他鸭子欺负。它无奈离开了妈妈,拿上一把猎枪,独自流浪,风餐露宿。每当遇到各种怪物而子弹不够用时,丑小鸭只能通过自己的血肉之躯踩死怪物。路上只能靠水果和蔬菜维持体力,无聊时也能抬头数星星。翻山越岭,逢水架桥,勇闯空中栈道和独木桥,踩过蹦床,躲过电锯,钻过加农炮,坐过火箭,穿过枪林弹雨,在极度艰苦的条件下大战终极BOSS。最终,丑小鸭占领了一座豪华城堡,里面住着它心仪的白富美(其实也是个丑小鸭),它在夜色降临之前,轻轻关上门,打开灯,结束了流浪生涯,此时天空绽放绚烂的烟花,拉开幸福生活的序幕...... 这个故事告诉我们:只要你肯奋斗,我命由我不由天 时长 课程分为上下两部,共64节课(21.1小时) 其中,上部29节课(8.5小时),下部35节课(12.6小时) 课程特色 * 对初学者友好,初次遇到新技术会详细讲解 * 全程直播,坚决不在直播外偷偷修改 * 展示所有细节,手把手教学 * 游戏元素完整丰富,共3张地图18个关卡 * 代码和文档开源,github托管地址 https://github.com/sailings/DuckAdventure * 完善的售后支持 涵盖实战中常用的知识点 * Physics,刚体,碰撞,弹簧体 * Mecanim,动画状态机,动画融合,动画层 * Animation,动画编辑与录制 * 单例模式 * 协程 * Dotween * 粒子特效 * 射线检测 * 键盘和移动端输入 * Cinemachine相机跟随,Confiner扩展 * UGUI常见控件,HUD * 屏幕自适应 * 地图与关卡解锁 * 关卡滑动 * 背景滚动 * 子弹轨迹计算 * 音效管理 * 场景编辑 * 数据及上下文存储 大纲 丑小鸭历险记——趣味玩转unity2d游戏开发(下)   1.背景设置原理解析 2.背景设置以及云彩,山,树的滚动 3.游戏状态菜单 4.暂停、恢复、重新开始 5.主菜单的状态切换,地图选择 6.地图解锁 7.关卡列表展示 8.关卡列表左右滑动 9.关卡进入,解锁,关卡的最佳成绩设置 10.通关界面UI设计以及显示 11.通关界面的数值更新、加载下一关 12.通关界面动画效果 13.移动端输入控制 14.音效(上) 15.音效(下) 16.场景整理与规划,总分计算,地形编辑 17.关卡W1-1(丛林) 18.关卡W1-2 19.关卡W1-3 20.关卡W1-4 21.关卡W1-5 22.关卡W1-6 23.关卡W1-7 24.关卡W1-8 25.关卡W1-9 26.关卡W1-10 27.关卡W1-11 28.关卡W1-12 29.关卡W2-1(荒漠) 30.关卡W2-2 31.关卡W2-3 32.关卡W3-1(冰雪) 33.关卡W3-2 34.关卡W3-3 35.游戏打包、课程总结

    343 人正在学习 去看看 洪青霞

开始界面是一个游戏最常见的元素,作品或大或少都会有这些东西。下面里面4.6之后Unity3D自带的UGUI,实现一个公告栏和开始界面,以此说明Unity3D中是怎么布置游戏UI的。如下图所示,开始游戏之前,我们会给用户公告比较长,但用户可以通过滑动滑块看完。


具体制作步骤如下:

1、新建一个Canvas,切换到2D界面,不懂的可以参详《【Unity3D】Helloworld》(点击打开链接)里面有具体做法,然后如下图,在Canvas下面布置一个Button按钮,利用矩形工具等移到相应的位置。


2、在右侧的属性面板,将Button设置成红色,然后Button旗下的Text,内容改成“开始游戏”,设置成白色,在竖直和水平方向设置对齐。


3、之后我们要设置一个公告栏,这部分由2个image和,2个text还有一个scoll bar组成的。首先我们先新建一个image拉到相应的位置,并设置颜色是R100 G0 B255 A100。在于Canvas的旗下(非该新建的image下)新建一个text,调到相应的内容,位置,设置水平、竖直对齐再拖到这个image旗下,这样做,text不会随这个image的拉伸而拉伸。以后在image上面放text都这样。


4、接下来再同理,做一个image,颜色为R255 G255 B100 A100,并重命名为plane和较长内容的text,并因为以后设置的需要,将个text重命名成Content,然后拖到plane里面,如图所示。


5、对Plane这个image添加UI->Mask和UI->Scroll Rect组件,并将Scroll Rect下的Horizontial取消,说明我们只需要在垂直状态下滚动。


6、如图所示,在Canvas下新建一个Scrollbar并做相应的调整。


7、如图,再对Plane下的Scroll Rect进行修改,将Content设置成名为Content的Text,将Vertical Scrollbar设置成刚刚创建的Scrollbar,设置的时候,是点⊙进行设置的。这样就能将面板、内容和滚动条绑定起来。



至此,公告栏做完了。整个过程没有一行代码,但这些UI控件设置起来并不简单。理论上,能通过拖控件实现的功能,尽量不要通过写代码来实现,毕竟这项拖控件正因为没有技术含量,所以实现起来非常简单,更重要的是维护起来相当好整,直接用矩形工具拖,总比你代码里面调这个控件在什么坐标好吧?

2013-12-20 15:51:59 wd791223 阅读数 9255
  • 丑小鸭历险记——趣味玩转unity2d游戏开发(下)

    故事简介 丑小鸭生来就很丑,谁都不喜欢它,从小被其他鸭子欺负。它无奈离开了妈妈,拿上一把猎枪,独自流浪,风餐露宿。每当遇到各种怪物而子弹不够用时,丑小鸭只能通过自己的血肉之躯踩死怪物。路上只能靠水果和蔬菜维持体力,无聊时也能抬头数星星。翻山越岭,逢水架桥,勇闯空中栈道和独木桥,踩过蹦床,躲过电锯,钻过加农炮,坐过火箭,穿过枪林弹雨,在极度艰苦的条件下大战终极BOSS。最终,丑小鸭占领了一座豪华城堡,里面住着它心仪的白富美(其实也是个丑小鸭),它在夜色降临之前,轻轻关上门,打开灯,结束了流浪生涯,此时天空绽放绚烂的烟花,拉开幸福生活的序幕...... 这个故事告诉我们:只要你肯奋斗,我命由我不由天 时长 课程分为上下两部,共64节课(21.1小时) 其中,上部29节课(8.5小时),下部35节课(12.6小时) 课程特色 * 对初学者友好,初次遇到新技术会详细讲解 * 全程直播,坚决不在直播外偷偷修改 * 展示所有细节,手把手教学 * 游戏元素完整丰富,共3张地图18个关卡 * 代码和文档开源,github托管地址 https://github.com/sailings/DuckAdventure * 完善的售后支持 涵盖实战中常用的知识点 * Physics,刚体,碰撞,弹簧体 * Mecanim,动画状态机,动画融合,动画层 * Animation,动画编辑与录制 * 单例模式 * 协程 * Dotween * 粒子特效 * 射线检测 * 键盘和移动端输入 * Cinemachine相机跟随,Confiner扩展 * UGUI常见控件,HUD * 屏幕自适应 * 地图与关卡解锁 * 关卡滑动 * 背景滚动 * 子弹轨迹计算 * 音效管理 * 场景编辑 * 数据及上下文存储 大纲 丑小鸭历险记——趣味玩转unity2d游戏开发(下)   1.背景设置原理解析 2.背景设置以及云彩,山,树的滚动 3.游戏状态菜单 4.暂停、恢复、重新开始 5.主菜单的状态切换,地图选择 6.地图解锁 7.关卡列表展示 8.关卡列表左右滑动 9.关卡进入,解锁,关卡的最佳成绩设置 10.通关界面UI设计以及显示 11.通关界面的数值更新、加载下一关 12.通关界面动画效果 13.移动端输入控制 14.音效(上) 15.音效(下) 16.场景整理与规划,总分计算,地形编辑 17.关卡W1-1(丛林) 18.关卡W1-2 19.关卡W1-3 20.关卡W1-4 21.关卡W1-5 22.关卡W1-6 23.关卡W1-7 24.关卡W1-8 25.关卡W1-9 26.关卡W1-10 27.关卡W1-11 28.关卡W1-12 29.关卡W2-1(荒漠) 30.关卡W2-2 31.关卡W2-3 32.关卡W3-1(冰雪) 33.关卡W3-2 34.关卡W3-3 35.游戏打包、课程总结

    343 人正在学习 去看看 洪青霞

Unity3d以场景为单位,UI场景之间的背景音乐要一直播放,而场景切换之间的loading界面,需要在前一个场景执行某个按键进行击发,并在下个场景开始的时候消失。

虽然二者同时公共的需求,但具体还是有所不同的。

一,如何设置背景音乐

1.新建空的游戏物件GlobalUIMusic,添加其tag为 GlobalUIMusic,并增加AudioSource组件,并设置睡醒就播放,并且是循环的。

(注意,物件位置的设定一定是尽量靠近场景的摄像机,摄像机默认有Audio Listener可以监听到声音)

2.绑定脚本:设置该物件加载时不销毁属性。在脚本的Awake()方法中直接调用DontDestroyOnLoad(this.gameObject);就OK。

3.将该物件生成预制体GlobalUIMusicPre(拖拽的时候,一定保证物件是激活状态,或者生成预制体后将预制体设置成激活状态)。该预制体一定放在Assets下的公共位置,每个场景都可以拖拽的。

4.可以干掉GlobalUIMusic了。

5.增加音乐控制脚本:这个是用绑定到每个场景的某个物件上的,一般是绑定在摄像机上。

每个场景有自己的背景音乐局部物件,一定要判断游戏中是否已经存在GlobalUIMusic,如果不存在,再生成新的GlobalUIMusic。否则就会出现每跳转一次场景,就会生成一个GlobalUIMusic,场景就会成为交响乐演奏会了!

 

二,设置加载界面。

1 - 4.创建物件GlobalLoading及其预制体步骤同上。

5.将要绑定给场景摄像机的控制加载的脚本如下,略有不同

 

基本上这样就可以满足需求了。

我写得比较粗糙,欢迎指正!

2017-04-15 11:27:55 yongh701 阅读数 35639
  • 丑小鸭历险记——趣味玩转unity2d游戏开发(下)

    故事简介 丑小鸭生来就很丑,谁都不喜欢它,从小被其他鸭子欺负。它无奈离开了妈妈,拿上一把猎枪,独自流浪,风餐露宿。每当遇到各种怪物而子弹不够用时,丑小鸭只能通过自己的血肉之躯踩死怪物。路上只能靠水果和蔬菜维持体力,无聊时也能抬头数星星。翻山越岭,逢水架桥,勇闯空中栈道和独木桥,踩过蹦床,躲过电锯,钻过加农炮,坐过火箭,穿过枪林弹雨,在极度艰苦的条件下大战终极BOSS。最终,丑小鸭占领了一座豪华城堡,里面住着它心仪的白富美(其实也是个丑小鸭),它在夜色降临之前,轻轻关上门,打开灯,结束了流浪生涯,此时天空绽放绚烂的烟花,拉开幸福生活的序幕...... 这个故事告诉我们:只要你肯奋斗,我命由我不由天 时长 课程分为上下两部,共64节课(21.1小时) 其中,上部29节课(8.5小时),下部35节课(12.6小时) 课程特色 * 对初学者友好,初次遇到新技术会详细讲解 * 全程直播,坚决不在直播外偷偷修改 * 展示所有细节,手把手教学 * 游戏元素完整丰富,共3张地图18个关卡 * 代码和文档开源,github托管地址 https://github.com/sailings/DuckAdventure * 完善的售后支持 涵盖实战中常用的知识点 * Physics,刚体,碰撞,弹簧体 * Mecanim,动画状态机,动画融合,动画层 * Animation,动画编辑与录制 * 单例模式 * 协程 * Dotween * 粒子特效 * 射线检测 * 键盘和移动端输入 * Cinemachine相机跟随,Confiner扩展 * UGUI常见控件,HUD * 屏幕自适应 * 地图与关卡解锁 * 关卡滑动 * 背景滚动 * 子弹轨迹计算 * 音效管理 * 场景编辑 * 数据及上下文存储 大纲 丑小鸭历险记——趣味玩转unity2d游戏开发(下)   1.背景设置原理解析 2.背景设置以及云彩,山,树的滚动 3.游戏状态菜单 4.暂停、恢复、重新开始 5.主菜单的状态切换,地图选择 6.地图解锁 7.关卡列表展示 8.关卡列表左右滑动 9.关卡进入,解锁,关卡的最佳成绩设置 10.通关界面UI设计以及显示 11.通关界面的数值更新、加载下一关 12.通关界面动画效果 13.移动端输入控制 14.音效(上) 15.音效(下) 16.场景整理与规划,总分计算,地形编辑 17.关卡W1-1(丛林) 18.关卡W1-2 19.关卡W1-3 20.关卡W1-4 21.关卡W1-5 22.关卡W1-6 23.关卡W1-7 24.关卡W1-8 25.关卡W1-9 26.关卡W1-10 27.关卡W1-11 28.关卡W1-12 29.关卡W2-1(荒漠) 30.关卡W2-2 31.关卡W2-3 32.关卡W3-1(冰雪) 33.关卡W3-2 34.关卡W3-3 35.游戏打包、课程总结

    343 人正在学习 去看看 洪青霞

在《【Unity3D】公告栏与开始界面的布置》(点击打开链接)我曾经简单地提到UGUI是怎么布置与使用的,但这根本不完整,就像单身狗缺个另一半永远只能被喂狗粮似的,组件也因为事件的存在才能够精彩。因此,UGUI的事件设置也是很重要的,下面举个例子来说明,Unity3D中如何进行场景切换、UGUI组件事件、开始游戏与关闭游戏的。如下图所示:


我们将设置2个场景,其中一个场景极其简单,只有“开始游戏”这个按钮,点击之后能进到我们的主场景,在主场景里面我们将设置slider和toggle控制一个cube的旋转。具体如下图所示:


具体做法如下。

一、开始场景Start

1、这一个场景的UGUI布置没什么好说的,就一个Canvas和Button,可以参详《【Unity3D】公告栏与开始界面的布置》(点击打开链接),自己利用矩形工具调好位置,设置好文字的大小之后。新建一个空物体,这物体之后用于附着脚本。


2、新建一个脚本StartScript,里面写下如下的代码,然后附着于空白物体GameObject上面,至于Unity3D的脚本具体怎么弄,可以参考《【Unity3D】Helloworld》(点击打开链接)。

using UnityEngine;
using System.Collections;

public class StartScript : MonoBehaviour
{

    // Use this for initialization
    void Start()
    {

    }

    // Update is called once per frame
    void Update()
    {

    }

    //之所以要如此复杂写一个函数接口,是因为UGUI事件函数需要。
    //理论上是可以直接写 public void OnStartGame(){Application.LoadLevel("Game");}
    //但这样一、不规范,二、脚本的复用性大大降低,如果这里有N个地方要实现场景撤换,那么则会有N个脚本
    //所以要这样写,我也不想弄这样的函数接口!-_-!
    public void OnStartGame(string sceneName)
    {
        Application.LoadLevel(sceneName);
    }
}
另外再提一句,如果是Unity5.x可能会报过时,可以参考《【Unity3D】物体、材质的设置、物体位移与旋转》(点击打开链接)写成SceneManager.LoadScene("XX");,其头文件是using UnityEngine.SceneManagement;,自求多福吧,我发现Unity5.x是个坑,文档少得可以,还是自觉退回Unity4.x继续学,以后估计就像Hibernate打死不用4.x一样,死守3.x阵线。

3、废话说多了,言归正传,将这个脚本付给空物体GameObject,还需要在Button设置这个事件,具体如下图所示。线画得有点乱,没有艺术修养的屌丝就这尿性,将就着看吧~


至此这个场景就做完了,Ctrl+S保存一下个场景,Save一下这个场景,命名为Start,这个场景叫啥没所谓,关键是一会儿你要创建的新场景叫啥,你这个OnClick()事件就传个啥名字给函数接口。

二、主场景Game

1、【File】->【New Scene】创建一个新场景,由于我们的Onclick表示要切到Game场景里面去,所以我们马上【File】->【Save Scene】一个叫Game就可以,然后Game场景我们需要布置如下的UI,具体如下图所示,除了Slider部分属性需要调整一下以外,其余没什么好说的,其中这里的Whole Numbers表示Slider是全条都可以使用,而不是一格一格的只有整数位,然后value意表开始的默认值为500:


2、接下来轻点上面的2D,切回3d视图,视角就没所谓了,反正在3D视角从来不好拖,我们直接设坐标算了,如《【Unity3D】物体、材质的设置、物体位移与旋转》(点击打开链接)所示,【GameObject】,布置一个【3D】->【Cube】和【Light】->【Directional Light】,Directional Light如果是Unity3D 5.x就本身自带。对Cube、Main Camera和Directional Light进行如下的调整。


3、之后就是对脚本的编写,首先,我们先从简单的关闭游戏按钮,事件入手,具体脚本如下,与上面设置开始游戏这个场景切换的道理完全一模一样,操作过场一模一样,就是新建一个CloseScript脚本赋予一个空物体GameObject,再对“关闭游戏”按钮设置OnClick事件而已,不再赘述。

using UnityEngine;
using System.Collections;

public class CloseScript : MonoBehaviour
{

    // Use this for initialization
    void Start()
    {

    }

    // Update is called once per frame
    void Update()
    {

    }

    //这里还是无参数的,因为关闭游戏本身就不需要任何参数,好嘛-_-!
    public void OnCloseGame()
    {
        Application.Quit();
    }
}
4、最后就是我们的重中之重,也就是这个游戏的最后一步了。编写RotationScript脚本如下,直接赋予给Cube这个物体。至于物体为甚可以旋转,请参考《【Unity3D】物体、材质的设置、物体位移与旋转》(点击打开链接)。

using UnityEngine;
using System.Collections;

public class RotationScript : MonoBehaviour
{
    public float speed = 0f;//旋转的速度,循例初始化而已,其实这个值没任何意义,后面通过slider当前值赋予
    public float orientation = 1f;//旋转的方向,故意写成float而不是bool,省得类型转换了

    // Use this for initialization
    void Start()
    {

    }

    //如英文缩写的,这个函数里面的内容将会被每帧执行,也就是说,此乃死循环函数,永远被执行
    // Update is called once per frame 
    void Update()
    {
        //让脚本被赋予者,用Vector3表示,永远在旋转
        transform.Rotate(Vector3.forward * Time.deltaTime * speed * orientation);
        transform.Rotate(Vector3.right * Time.deltaTime * speed * orientation);
    }

    //此函数接口将会被赋予给Slider的On Value Changed事件
    //Slider被滑动一下,此函数将会被触发,更新旋转速度
    public void ChangeSpeed(float newSpeed)
    {
        speed = newSpeed;
    }

    //此函数接口将会被赋予给Toggle的On Value Changed事件
    //(bool a)代表Toggle传过来的参数,虽然没用,但以免传接参数的时候有莫名其妙的错误
    //还是循例写上了
    public void ChangeOrientation(bool a)
    {
        if (orientation == 1f)
        {
            orientation = -1f;
        }
        else
        {
            orientation = 1f;
        }
    }
}

之后对Toggle组件设置使用Cube组件的ChangeOrientation函数,如下图:


最后对Slider组件的On Value Changed事件,设置使用Cube组件的ChangeSpeed函数,这里有个大坑,弄了我N久。如下图,大家注意到,这个选项有2个同名的ChangeSpeed函数。


具体有什么区别呢?请注意,如果你选择的ChangeSpeed后面不带参数的,意为,我要传当前Slider的值进public void ChangeSpeed(float newSpeed),也就是说Slider的值就是newSpeed的值,这也是我们这个程序需要的。

而,选择ChangeSpeed(float)的话,你会发现这sb的Unity3D非要你设置一个定值参数,如下图所示:


之后发现什么,大家对照着什么脚本想吧。这就意味着,传进public void ChangeSpeed(float newSpeed)的值永远是0,那么这个立方体永远不会动。

至此,整个程序做完了。Ctrl+S保存下这个场景。

三、发布时的部分调整

因为这里有两个场景,同时UGUI没有做自适应屏幕,所以发布之前我们要做如下的调整,固定程序的分辨率。


2017-06-19 10:59:02 tom_221x 阅读数 1273
  • 丑小鸭历险记——趣味玩转unity2d游戏开发(下)

    故事简介 丑小鸭生来就很丑,谁都不喜欢它,从小被其他鸭子欺负。它无奈离开了妈妈,拿上一把猎枪,独自流浪,风餐露宿。每当遇到各种怪物而子弹不够用时,丑小鸭只能通过自己的血肉之躯踩死怪物。路上只能靠水果和蔬菜维持体力,无聊时也能抬头数星星。翻山越岭,逢水架桥,勇闯空中栈道和独木桥,踩过蹦床,躲过电锯,钻过加农炮,坐过火箭,穿过枪林弹雨,在极度艰苦的条件下大战终极BOSS。最终,丑小鸭占领了一座豪华城堡,里面住着它心仪的白富美(其实也是个丑小鸭),它在夜色降临之前,轻轻关上门,打开灯,结束了流浪生涯,此时天空绽放绚烂的烟花,拉开幸福生活的序幕...... 这个故事告诉我们:只要你肯奋斗,我命由我不由天 时长 课程分为上下两部,共64节课(21.1小时) 其中,上部29节课(8.5小时),下部35节课(12.6小时) 课程特色 * 对初学者友好,初次遇到新技术会详细讲解 * 全程直播,坚决不在直播外偷偷修改 * 展示所有细节,手把手教学 * 游戏元素完整丰富,共3张地图18个关卡 * 代码和文档开源,github托管地址 https://github.com/sailings/DuckAdventure * 完善的售后支持 涵盖实战中常用的知识点 * Physics,刚体,碰撞,弹簧体 * Mecanim,动画状态机,动画融合,动画层 * Animation,动画编辑与录制 * 单例模式 * 协程 * Dotween * 粒子特效 * 射线检测 * 键盘和移动端输入 * Cinemachine相机跟随,Confiner扩展 * UGUI常见控件,HUD * 屏幕自适应 * 地图与关卡解锁 * 关卡滑动 * 背景滚动 * 子弹轨迹计算 * 音效管理 * 场景编辑 * 数据及上下文存储 大纲 丑小鸭历险记——趣味玩转unity2d游戏开发(下)   1.背景设置原理解析 2.背景设置以及云彩,山,树的滚动 3.游戏状态菜单 4.暂停、恢复、重新开始 5.主菜单的状态切换,地图选择 6.地图解锁 7.关卡列表展示 8.关卡列表左右滑动 9.关卡进入,解锁,关卡的最佳成绩设置 10.通关界面UI设计以及显示 11.通关界面的数值更新、加载下一关 12.通关界面动画效果 13.移动端输入控制 14.音效(上) 15.音效(下) 16.场景整理与规划,总分计算,地形编辑 17.关卡W1-1(丛林) 18.关卡W1-2 19.关卡W1-3 20.关卡W1-4 21.关卡W1-5 22.关卡W1-6 23.关卡W1-7 24.关卡W1-8 25.关卡W1-9 26.关卡W1-10 27.关卡W1-11 28.关卡W1-12 29.关卡W2-1(荒漠) 30.关卡W2-2 31.关卡W2-3 32.关卡W3-1(冰雪) 33.关卡W3-2 34.关卡W3-3 35.游戏打包、课程总结

    343 人正在学习 去看看 洪青霞

在UI界面制作过程中,一些复杂的界面功能,常常会有不同状态和结果的展现。比如,选项卡,物品道具的状态信息,不同的描述信息和图片等。通常的处理方法,是用代码在不同的状态下,控制不同元素的可见性。但具体到Unity里,利用GameObject的可视化编辑,可以把不同的界面状态通过编辑器的配置来完成,这样代码只需要一句话状态切换就可以完成繁琐的界面元素控制。

    public class GameObjectState : MonoBehaviour
    {
        public State[] states;

        public void SetState(string stateName)
        {
            foreach (State state in this.states)
            {
                if (state.name == stateName)
                {
                    foreach (GameObject go in state.activeTrueObjs)
                    {
                        go.SetActive(true);
                    }

                    foreach (GameObject go in state.activeFalseObjs)
                    {
                        go.SetActive(false);
                    }

                    break;
                }
            }
        }

        [Serializable]
        public class State
        {
            public string       name;
            public GameObject[] activeTrueObjs;
            public GameObject[] activeFalseObjs;
        }
    }

思路是,GameObjectState 维护了一组状态集合,每个状态就是一个可以配置的State,里面包含了这个状态下,元素的可见性控制。通过设置name来切换State,从而得到不同状态下的界面呈现。


看一个使用的例子:





可以看到,列表元素的每一项,都有购买,拥有,使用三个状态。这里使用GameObjectState,针对每一个选项进行了配置,控制了这3个状态的元素可见性。这样,在代码中切换选项的状态,只需要一句话状态切换就可以达到目的。

            if (item.index == ShopSaveData.instance.shopMountSelectId)
            {
                UIShopMountList.selectItem = item;
                item.GetComponent<GameObjectState>().SetState("Use");
                continue;
            }

            if (ShopSaveData.instance.shopMountIds.Contains(i))
            {
                item.GetComponent<GameObjectState>().SetState("Has");
            }
            else
            {
                item.GetComponent<GameObjectState>().SetState("Buy");
            }


在使用Spine骨骼动画工具的时候, 除了做动画,还可以用Spine来做UI。Spine工具有一个切换皮肤的功能,在使用的过程中,我发现利用切换皮肤的功能,就相当于维护了一个UI的状态。所以,利用切换皮肤,就完成了UI不同状态元素的显示切。其原理,和在Unity中的GameObjectState是一样的。


Unity3d的UI控制脚本

阅读数 1473

没有更多推荐了,返回首页