【Unity3d游戏开发】UGUI插件入门之游戏菜单
ugui是unity4.6开始加入的一个新的ui系统,非常强大,下面我们将通过一系列博客的方式一起来学习一下ugui的使用。本篇博客会介绍如何使用ugui制作一个游戏菜单,并且了解如何让物体与ugui的控件交互,效果图如下:


首先还是新建一个unity工程,并且新建一个场景,然后新建一个Canvas画布,我们所有的ui控件,都是要建立在Canvas上面的。然后在Canvas下面建立一个button重命名为StartButton,并调节成效果图中的样式。然后再复制两份出来,把他们放置到如效果图的位置,调节他们的文字和颜色,大小等。


接着在Canvas下面新建一个Toggle,它类似于checkbox的功能。将它设置为效果图的样式。然后在新建一个Slider,设置它的参数如效果图所示:

接下来我们要设计出游戏的公告栏面板,它是由三个image,2个text,一个scrollbar组成的。

首先还是新建一个image,并将它重命名为Note,设置它的大小如效果图所示,然后在它的下面再新建一个image并命名为TitileBG,将它设置为紫色,并且放到Note的顶部位置,然后在TitileBG下面新建一个text,将内容设置为公告栏,然后继续在Note的下面新建一个image,将它命名为Content,用它来承载我们的公告内容。然后在Content的下面新建一个text,然后给text赋值上一段比较长的文字内容,将text拉长以显示全部的文字内容。为了让文字具有滚动的功能,我们要为Content加上一个Scroll Rect,只勾选Vertical以便让文字只能垂直方向移动,并将content属性设置为text文字,这样就具备了滚动的功能了。为了让多余的部分不显示出来,我们需要为Content添加一个mask组件。
接着让我们为公告栏设计一个滑块,在Note下面新建一个Scroll Bar,将他的Direction设置为Bottom to Top,然后将Content中的Vertical ScrollBar属性设置为我们刚建立的这个ScrollBar。


为了方便,我们新建一个空物体来挂载脚本,新建一个空物体,命名为GameManager,然后为它挂载一个脚本,代码如下:
/*
ProjectName: UGUI之游戏菜单
Author: 马三小伙儿
Blog: http://www.cnblogs.com/msxh/
Github:https://github.com/XINCGer
Date: 2016/09/14
*/
using UnityEngine;
using System.Collections; public class GameManager : MonoBehaviour { // Use this for initialization
void Start () { } // Update is called once per frame
void Update () { } public void OnStartGame(string sceneName){
Application.LoadLevel (sceneName);
}
public void OnStartGame(int sceneIndex){
Application.LoadLevel (sceneIndex);
}
}
里面只有一个重载的OnStartGame函数,用它来加载新的场景。将这OnStartGame函数绑定到StartButton的OnClikc事件上面,然后将参数设置为"Game"(下一个场景的名字),运行预览,点击开始游戏即可跳转到Game场景了。
在Game场景中主要的部分只有一个Cube(已重命名为Player)和一个Slider,我们将用他们来学习控制是如何交互的。为Player添加一个脚本,代码如下:
/*
ProjectName: UGUI之游戏菜单
Author: 马三小伙儿
Blog: http://www.cnblogs.com/msxh/
Github:https://github.com/XINCGer
Date: 2016/09/14
*/
using UnityEngine;
using System.Collections; public class Player : MonoBehaviour { public float speed=90f;
// Use this for initialization
void Start () { } // Update is called once per frame
void Update () {
transform.Rotate (Vector3.forward*Time.deltaTime*speed);
} public void ChangeSpeed(float newSpeed){
speed = newSpeed;
}
}
这个脚本可以控制Cube的旋转速度,里面有一个ChangeSpeed函数,用来来改变速度。接着将Slider的OnValueChanged事件赋值为ChangeSpeed函数,这样Slider在滑动时就会通知ChangeSpeed函数去更改speed,Cube的旋转速度也就随之而改变了。

本篇博客的工程已经同步到github:https://github.com/XINCGer/Unity3DTraining/tree/master/UGUITraining/UGUIDemo01
作者:马三小伙儿
出处:http://www.cnblogs.com/msxh/p/5921776.html
请尊重别人的劳动成果,让分享成为一种美德,欢迎转载。另外,文章在表述和代码方面如有不妥之处,欢迎批评指正。留下你的脚印,欢迎评论!
【Unity3d游戏开发】UGUI插件入门之游戏菜单的更多相关文章
- 6、Cocos2dx 3.0游戏开发找小三之游戏的基本概念
重开发人员的劳动成果,转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/27689713 郝萌主友情提示: 人是习惯的产物,当你 ...
- Unity3D游戏开发初探—1.跨平台的游戏引擎让.NET程序员新生
一.Unity3D平台简介 Unity是由Unity Technologies开发的一个让轻松创建诸如三维视频游戏.建筑可视化.实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的 ...
- 2017年Unity游戏开发视频教程(入门到精通)
本文是我发布的一个Unity游戏开发的学习目录,以后我会持续发布一系列的游戏开发教程,都会更新在这个页面上,适合人群有下面的几种: 想要做独立游戏的人 想要找游戏开发相关工作的人 对游戏开发感兴趣的人 ...
- python+pygame游戏开发之使用Py2exe打包游戏
最近在用python+pygame 开发游戏,写完以后在分享给朋友玩的时候遇到了很大的问题,只有搭建了环境才能运行python脚本. 这会吓退99%以上的人……所以把我们的游戏打包(注意是打包而不是编 ...
- 14、Cocos2dx 3.0三,找一个小游戏开发Scene and Layer:游戏梦想
发人员的劳动成果,转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/30474393 Scene :场景 了解了Director ...
- [Android游戏开发]八款开源 Android 游戏引擎 (巨好的资源)
初学Android游戏开发的朋友,往往会显得有些无所适从,他们常常不知道该从何处入手,每当遇到自己无法解决的难题时,又往往会一边羡慕于 iPhone下有诸如Cocos2d-iphone之类的免费游戏引 ...
- [libGDX游戏开发教程]使用libGDX进行游戏开发(12)-Action动画
前文章节列表: 使用libGDX进行游戏开发(11)-高级编程技巧 使用libGDX进行游戏开发(10)-音乐音效不求人,程序员也可以DIY 使用libGDX进行游戏开发(9)-场景过渡 ...
- [libGDX游戏开发教程]使用libGDX进行游戏开发(1)-游戏设计
声明:<使用Libgdx进行游戏开发>是一个系列,文章的原文是<Learning Libgdx Game Development>,大家请周知.后续的文章连接在这里 使用Lib ...
- 【Unity游戏开发】浅谈Unity游戏开发中的单元测试
一.单元测试的定义与作用 单元测试定义:单元测试在传统软件开发中是非常重要的工具,它是指对软件中的最小可测试单元进行检查和验证,一般情况下就是对代码中的一个函数去进行验证,检查它的正确性.一个单元测试 ...
随机推荐
- [Fluent NHibernate]一对多关系处理
目录 写在前面 系列文章 一对多关系 总结 写在前面 上篇文章简单介绍了,Fluent Nhibernate使用代码的方式生成Nhibernate的配置文件,以及如何生成持久化类的映射文件.通过上篇的 ...
- 【06-23】js动画学习笔记01
<html> <head> <style> * { margin:0; padding:0; } #div1{ width:200px; height:200px; ...
- Ubuntu 12.4 Apache2 安装教程
一.更新操作系统 sudo apt-get update && sudo apt-get upgrade 二.安装Apache及依赖 sudo apt-get install apac ...
- 前端学习笔记 - Css初级篇
有话先说:我是一只菜鸟,一只都是,从前是现在也是. CSS中的会计元素与行内元素 块级元素特性:占据一整行,总是重起一行并且后面的元素也必须另起一行显示.内联元素特性:和其他内联元素显示在同一行. 可 ...
- PHP curl获取页面内容,不直接输出到页面,CURLOPT_RETURNTRANSFER参数设置
使用PHP curl获取页面内容或提交数据,有时候希望返回的内容作为变量储存,而不是直接输出.这个时候就必需设置curl的或true. 1.curl获取页面内容, 直接输出例子: <?php $ ...
- POJ2195 最小费用流
题目:http://poj.org/problem?id=2195 处理出每个人到每个门的曼哈顿距离,分别建立容量为1费用为曼哈顿距离的边,在源点和每个人人之间建立容量为1费用为0的边,在门和汇点之间 ...
- php之jquery
<!DOCTYPE html> <html> <head> <script type="xxx.js"></script> ...
- iOS如何跳到系统设置里的各种设置界面
最近项目需要授权时候跳转到相关的设置页面,自己总结了一下,想写到简书上来,和大家分享一下. 在本人测试后,iOS8和9都没有问题,直接跳转到各个页面,这可能苹果对这方面开放了吧.第一步修改plist文 ...
- sdcms标签
模板防盗:<%if not in_sdcms then response.write("template load fail"):response.end() end if% ...
- 【Python基础学习五】列表,元祖,字典
1.列表(list) 列表是Python的一种内置数据类型,list是一种有序的集合,可以随时添加和删除其中的元素,就像动态数组一样.获取list中的元素用角标获取,角标可以使用正角标,也可以使用负角 ...