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 ...
随机推荐
- Config
Config Config App Auth Cache Database Languages Mail Modules Routing Session Config Settings for the ...
- 心跳之旅—💗—iOS用手机摄像头检测心率(PPG)
[前情提要] 光阴似箭,日月如梭,最近几年,支持心率检测的设备愈发常见了,大家都在各种测空气测雪碧的,如火如荼,于是我也来凑一凑热闹.[0]这段时间,我完成了一个基于iOS的心率检测Demo,只要稳定 ...
- IIS 之 失败请求跟踪规则
若想使用此功能需先启动如下图的Windows功能: 利用失败请求跟踪功能,可以在出现问题时捕获相应的XML格式的日志,从而无需重现该问题即可开始故障排除.此外,还可以定义应用程序的失败条件并配置要基于 ...
- I P 127.X.X.X 和 0.0.0.0
127.x.x.x 这是大家最熟悉不过的本地loopback地址,在windows和linux上等价于localhost. 我们习惯于使用127.0.0.1,实际上, 如果你在命令行下ping 127 ...
- OC中-方法到底是如何使用的?
方法:方法是Objective-C独有的一种结构,只能在Objective-C中声明.定义和使用,C语言不能声明.定义和使用. 1.类方法以+号开头,对象方法以-号开头+ (void) init; ...
- app卡顿问题检测--KMCGeigerCounter
介绍: KMCGeigerCounter是一个iOS帧速计算器,像盖革计数器那样,当动画丢失一帧时它就记录一次.掉帧通常是不可见的,但是很难区分55fps和60fps之间的不同,而KMCGeigerC ...
- Kali安全测试相关书籍
Kali安全测试相关书籍http://www.automationqa.com/forum.php?mod=viewthread&tid=4052&fromuid=2
- Spring Boot 获取ApplicationContext
package com.demo; import org.springframework.beans.BeansException; import org.springframework.contex ...
- [YII]将ar查询结果转化成数组
$Column= Column::model()->findAll(); $data = array_map(create_function('$m', 'return $m->getAt ...
- DEDECMS 获取当前栏目及所有子栏目的文章数量
因DEDEV5起,加强了对SQL注入和安全的检查,导致无法查询一些正常的子查询的SQL. 以下代码用来解决查询当前栏目及当前栏目下所有子栏目的文章总数,添加到/include/common.func. ...