unity3d游戏开发——新手引导
GUI实现,如下:

按“G”键开始新手引导

代码如下:
using UnityEngine;
using System.Collections; public class OkButton : GUIBase {
/// <summary>
/// 按钮图片
/// </summary>
public Texture2D OKBTN_a;
public Texture2D OKBTN_b;
/// <summary>
/// 引导图片
/// </summary>
public Texture2D HoleTexture; private GUIStyle OKBTNStyle;
private GUIStyle _defaultStyle;
// Use this for initialization
public override void Start () {
base.Start();
OKBTNStyle = new GUIStyle();
_defaultStyle = new GUIStyle();
_defaultStyle.padding = new RectOffset(, , , );
_defaultStyle.border = new RectOffset(, , , );
if (OKBTN_a == null)
{
OKBTN_a = Resources.Load("OKBTN/OK_a") as Texture2D;
OKBTNStyle.normal.background = OKBTN_a;
}
if (OKBTN_b == null)
{
OKBTN_b = Resources.Load("OKBTN/OK_b") as Texture2D;
OKBTNStyle.active.background = OKBTN_b;
}
if (HoleTexture == null)
HoleTexture = Resources.Load("OKBTN/okfight") as Texture2D;
} // Update is called once per frame
public override void Update () {
base.Update();
}
private bool _isGuider = false;
void LateUpdate()
{
if (Input.GetKeyDown(KeyCode.G))
{
_isGuider = true;
}
}
public override void OnGUI()
{
base.OnGUI();
if (_isGuider) //引导
{
GUI.DrawTexture(new Rect(, , , ), HoleTexture);
Rect rect = new Rect(, , , );
OkButton.AddHole(rect, _defaultStyle);
if (Event.current.type == EventType.MouseUp)
{
if (rect.Contains(Event.current.mousePosition))
{
StartCoroutine(disCatch());
}
}
}
if (GUI.Button(new Rect(, , , ), "", OKBTNStyle))
{
print("Click OKBTN");
_isGuider = false;
}
if (GUI.Button(new Rect(, , , ), "", OKBTNStyle))
{
print("Click Other");
} }
/// <summary>
/// 另外线程处理
/// </summary>
/// <returns></returns>
IEnumerator disCatch()
{
//开一个线程处理要处理的事
yield return ;
}
/// <summary>
/// 在界面上面开孔,只有此处可以点击,其余的地方屏蔽用户点击,即在该按钮四周加其他按钮,先加的按钮会在上层。后加的按钮被屏蔽。
/// </summary>
/// <param name="rect"></param>
public static void AddHole(Rect rect, GUIStyle style)
{
GUI.Button(new Rect(, , GUIBase.DesignStageWidth, rect.y), "", style);//上面的button
GUI.Button(new Rect(, rect.yMax, GUIBase.DesignStageWidth, GUIBase.DesignStageHeight - rect.yMax), "", style); //下边的button
GUI.Button(new Rect(, rect.y, rect.x, rect.height), "", style);//左边
GUI.Button(new Rect(rect.xMax, rect.y, GUIBase.DesignStageWidth - rect.xMax, rect.height), "", style);//右边
}
}
unity3d游戏开发——新手引导的更多相关文章
- Unity3D游戏开发初探—2.初步了解3D模型基础
一.什么是3D模型? 1.1 3D模型概述 简而言之,3D模型就是三维的.立体的模型,D是英文Dimensions的缩写. 3D模型也可以说是用3Ds MAX建造的立体模型,包括各种建筑.人物.植被. ...
- 从一点儿不会开始——Unity3D游戏开发学习(一)
一些废话 我是一个windows phone.windows 8的忠实粉丝,也是一个开发者,开发数个windows phone应用和两个windows 8应用.对开发游戏一直抱有强烈兴趣和愿望,但奈何 ...
- Unity3D游戏开发之连续滚动背景
Unity3D游戏开发之连续滚动背景 原文 http://blog.csdn.net/qinyuanpei/article/details/22983421 在诸如天天跑酷等2D游戏中,因为游戏须要 ...
- Unity3D游戏开发从零单排(四) - 制作一个iOS游戏
提要 此篇是一个国外教程的翻译,尽管有点老,可是适合新手入门. 自己去写代码.debug,布置场景,能够收获到非常多.游戏邦上已经有前面两部分的译文,这里翻译的是游戏的最后一个部分. 欢迎回来 在第一 ...
- [Unity3D]Unity3D游戏开发之飞机大战项目解说
大家好,我是秦元培,欢迎大家继续关注我的博客,我的博客地址是blog.csdn.net/qinyuanpei. 首先感谢大家对我博客的关注,今天我想和大家分享的是一个飞机大战的项目.这是一个比較综合的 ...
- [Unity3D]Unity3D游戏开发《反对》说到游戏(上)——目标跟踪
朋友,大家好.我是秦培,欢迎关注我的博客.我的博客地址blog.csdn.net/qinyuanpei. 首先博主要自我反省,过了这么久才来更新博客,这段时间主要是在忙着写期末的作业,所以博主基本上没 ...
- [Unity3D]Unity3D游戏开发3D选择场景中的对象,并显示轮廓效果强化版
大家好,我是秦培,欢迎关注我的博客,我的博客地址blog.csdn.net/qinyuanpei. 在上一篇文章中,我们通过自己定义着色器实现了一个简单的在3D游戏中选取.显示物体轮廓的实例. 在文章 ...
- [Unity3D]Unity3D游戏开发之跑酷游戏项目解说
大家好,我是秦元培.我參加了CSDN2014博客之星的评选,欢迎大家为我投票,同一时候希望在新的一年里大家能继续支持我的博客. 大家晚上好.我是秦元培,欢迎大家关注我的博客,我的博客地址是blog.c ...
- [Unity3D]Unity3D游戏开发之异步记载场景并实现进度条读取效果
大家好,我是秦元培.欢迎大家关注我的博客,我的博客地址是:blog.csdn.net/qinyuanpei.终于在各种无语的论文作业中解脱了,所以立即抓紧时间来这里更新博客.博主本来计划在Unity3 ...
随机推荐
- hibernate3整合spring2时hibernate即用注解又用配置文件情况时spring配置文件的配置写法
hibernate只用注解时,spring的配置文件的配置如下 <bean id="dataSource" class="org.apache.commons.db ...
- 0x800a1391-Microsoft Jscript "JSON未定义"
本人在进行调试代码是遇到以下问题: 在运行到var result = JSON.parse(data);这句时,报错:JSON未定义.如下图:
- multithread synchronization use mutex and semaphore
#include <malloc.h> #include <pthread.h> #include <semaphore.h> struct job { /* Li ...
- easyui-validatebox验证 radio
添加规则 $.extend($.fn.validatebox.defaults.rules, { requireRadio: { validator: function(value, param){ ...
- Android 常见adb命令
1. 查看所有已链接的设备 命令: adb devices 例: C:\Users\laiyu>adb devices List of devices attached 5d3b5aac ...
- 关于apple watch(苹果表)
如何升级呢? 对于Apple Watch用户来说,只要打开Apple Watch的iPhone应用,打开主菜单然 后选择软件升级,就能下载升级文件.新版本可以无线安装.需要注意的是,在升级 wat ...
- jQuery mouseover与mouseenter,mouseout与mouseleave的区别
mouseover与mouseenter 不论鼠标指针穿过被选元素或其子元素,都会触发 mouseover 事件. 只有在鼠标指针穿过被选元素时,才会触发 mouseenter 事件. mouseou ...
- linux gpg 使用笔记
http://linux.chinaunix.net/techdoc/system/2009/04/30/1109541.shtml 一.GnuPG的简介 我们在网上的发送的邮件是明文的,可以 ...
- Extjs load和reload的区别
store load()和reload() load( Object options ) : Boolean 采用配置好的Reader格式去加载Record缓存,具体请求的任务由配置好的Proxy对象 ...
- JNI的一些使用
1.简介 Java Native Interface(JNI) 有时候我们必须要调用本地代码c/c++来克服java中的内存管理和性能限制.java支持通过Java Native Interface( ...