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 ...
随机推荐
- 使用Atomikos Transactions Essentials实现多数据源JTA分布式事务--转载
原文:http://www.ite/topic/122700 9.17 update:使用NonXADataSourceBean. Mysql在5.0版本和Connecter/J5.0版本后提供了XA ...
- Input
Input Basic Input Old Input Files Please note that both Input and Request do NOT sanitize your data, ...
- 微软Hololens学院教程- Holograms 100: Getting Started with Unity【微软教程已经更新,本文是老版本】
这是老版本的教程,为了不耽误大家的时间,请直接看原文,本文仅供参考哦!原文链接:https://developer.microsoft.com/EN-US/WINDOWS/HOLOGRAPHIC/ho ...
- Asp.Net 之 缓存机制
asp.net缓存有三种:页面缓存,数据源缓存,数据缓存. 一.页面缓存 原理:页面缓存是最常用的缓存方式,原理是用户第一次访问的时候asp.net服务器把动态生成的页面存到内存里,之后一段时间再有用 ...
- AbStract 和Interface 方法是否能用Static修饰,为什么?
Abstract 和Interface 方法是否能用Static修饰,为什么? interface中不能含有Static方法,属性,成员变量. Abstract中可以有Static方法,属性,成员变量 ...
- 关于Eclipse Modeling Framework进行建模,第二部分
使用 Eclipse Modeling Framework 进行建模,第 2 部分 Eclipse 的 Java Emitter Templates(JET) 是一个开放源代码工具,可以在 Eclip ...
- Nodejs v4.x.0API文档学习(1)简介
文档参考地址:https://nodejs.org/dist/latest-v4.x/docs/api/ 简介 下面是用nodejs编写的一个web服务的例子,返回"Hello World& ...
- 创建eclipse新的workspace并设置workspace共享配置
一:创建新的workspace 1.File——Switch Workspace——Other 2.修改workspace路径和名称 3.修改后如下: 4.点击OK按钮后,eclipse自动重启 同时 ...
- rs.open sql,conn,3,1中3,1代表什么
RecordSet中的open完全的语法是 SecordSet.Open Source,ActiveConnection,CursorType,LockType,Options 例如: rs.open ...
- SQL Server 2012 内存管理 (memory management) 改进
SQL Server 2012 的内存管理和以前的版本相比,有以下的一些变化. 一.内存分配器的变化 SQL Server 2012以前的版本,比如SQL Server 2008 R2等, 有sing ...