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游戏开发——新手引导的更多相关文章

  1. Unity3D游戏开发初探—2.初步了解3D模型基础

    一.什么是3D模型? 1.1 3D模型概述 简而言之,3D模型就是三维的.立体的模型,D是英文Dimensions的缩写. 3D模型也可以说是用3Ds MAX建造的立体模型,包括各种建筑.人物.植被. ...

  2. 从一点儿不会开始——Unity3D游戏开发学习(一)

    一些废话 我是一个windows phone.windows 8的忠实粉丝,也是一个开发者,开发数个windows phone应用和两个windows 8应用.对开发游戏一直抱有强烈兴趣和愿望,但奈何 ...

  3. Unity3D游戏开发之连续滚动背景

    Unity3D游戏开发之连续滚动背景 原文  http://blog.csdn.net/qinyuanpei/article/details/22983421 在诸如天天跑酷等2D游戏中,因为游戏须要 ...

  4. Unity3D游戏开发从零单排(四) - 制作一个iOS游戏

    提要 此篇是一个国外教程的翻译,尽管有点老,可是适合新手入门. 自己去写代码.debug,布置场景,能够收获到非常多.游戏邦上已经有前面两部分的译文,这里翻译的是游戏的最后一个部分. 欢迎回来 在第一 ...

  5. [Unity3D]Unity3D游戏开发之飞机大战项目解说

    大家好,我是秦元培,欢迎大家继续关注我的博客,我的博客地址是blog.csdn.net/qinyuanpei. 首先感谢大家对我博客的关注,今天我想和大家分享的是一个飞机大战的项目.这是一个比較综合的 ...

  6. [Unity3D]Unity3D游戏开发《反对》说到游戏(上)——目标跟踪

    朋友,大家好.我是秦培,欢迎关注我的博客.我的博客地址blog.csdn.net/qinyuanpei. 首先博主要自我反省,过了这么久才来更新博客,这段时间主要是在忙着写期末的作业,所以博主基本上没 ...

  7. [Unity3D]Unity3D游戏开发3D选择场景中的对象,并显示轮廓效果强化版

    大家好,我是秦培,欢迎关注我的博客,我的博客地址blog.csdn.net/qinyuanpei. 在上一篇文章中,我们通过自己定义着色器实现了一个简单的在3D游戏中选取.显示物体轮廓的实例. 在文章 ...

  8. [Unity3D]Unity3D游戏开发之跑酷游戏项目解说

    大家好,我是秦元培.我參加了CSDN2014博客之星的评选,欢迎大家为我投票,同一时候希望在新的一年里大家能继续支持我的博客. 大家晚上好.我是秦元培,欢迎大家关注我的博客,我的博客地址是blog.c ...

  9. [Unity3D]Unity3D游戏开发之异步记载场景并实现进度条读取效果

    大家好,我是秦元培.欢迎大家关注我的博客,我的博客地址是:blog.csdn.net/qinyuanpei.终于在各种无语的论文作业中解脱了,所以立即抓紧时间来这里更新博客.博主本来计划在Unity3 ...

随机推荐

  1. hibernate3整合spring2时hibernate即用注解又用配置文件情况时spring配置文件的配置写法

    hibernate只用注解时,spring的配置文件的配置如下 <bean id="dataSource" class="org.apache.commons.db ...

  2. 0x800a1391-Microsoft Jscript "JSON未定义"

    本人在进行调试代码是遇到以下问题: 在运行到var result = JSON.parse(data);这句时,报错:JSON未定义.如下图:

  3. multithread synchronization use mutex and semaphore

    #include <malloc.h> #include <pthread.h> #include <semaphore.h> struct job { /* Li ...

  4. easyui-validatebox验证 radio

    添加规则 $.extend($.fn.validatebox.defaults.rules, { requireRadio: { validator: function(value, param){ ...

  5. Android 常见adb命令

    1.  查看所有已链接的设备 命令: adb devices   例: C:\Users\laiyu>adb devices List of devices attached 5d3b5aac  ...

  6. 关于apple watch(苹果表)

      如何升级呢? 对于Apple Watch用户来说,只要打开Apple Watch的iPhone应用,打开主菜单然 后选择软件升级,就能下载升级文件.新版本可以无线安装.需要注意的是,在升级 wat ...

  7. jQuery mouseover与mouseenter,mouseout与mouseleave的区别

    mouseover与mouseenter 不论鼠标指针穿过被选元素或其子元素,都会触发 mouseover 事件. 只有在鼠标指针穿过被选元素时,才会触发 mouseenter 事件. mouseou ...

  8. linux gpg 使用笔记

    http://linux.chinaunix.net/techdoc/system/2009/04/30/1109541.shtml 一.GnuPG的简介     我们在网上的发送的邮件是明文的,可以 ...

  9. Extjs load和reload的区别

    store load()和reload() load( Object options ) : Boolean 采用配置好的Reader格式去加载Record缓存,具体请求的任务由配置好的Proxy对象 ...

  10. JNI的一些使用

    1.简介 Java Native Interface(JNI) 有时候我们必须要调用本地代码c/c++来克服java中的内存管理和性能限制.java支持通过Java Native Interface( ...