006-unity3d GUI初识、贴图、自定义鼠标指针
一、gui概念
无论摄像机拍摄到的图像怎么变换,GUI永远显示在屏幕上,不受变形、碰撞、光照的影响。
对话框、战斗值、能量等。
示例:用手机录像,摄像的参数不会随着拍摄场景变换。
GUI基础
GUI部分是每帧擦除重绘的,只应该在OnGUI中绘制GUI,按钮:GUILayout.Button(“Hello”);只读标签GUILayout.label()[注意脚本要实例化到GameObject上]
(引申)GUI有很对细节问题,比如GUI的绘制机制、如何响应鼠标点击、布局、如何获取设置控件。窗口等都和普通的窗口程序不一样()。其中还有NGUI、2DToolKit等
示例
在脚本中
void OnGUI()
{
GUILayout.Button("hello");
}
Material 是3D贴图;Texture是2D贴图,也就是GUI。
二、贴图材质Material画皮
给GUI贴图:给脚本增加一个Texture类型的public字段,GUI.DrawTexture(new Rect(100,100,100,100),MyTexture);把Texture画到界面上指定区域。直接把图片从project拖到脚本的MyTexture属性上即可。
做项目推荐定义public Texture的做法,这样可以方便美工修改贴图便于分工。
建项目时候应该不同类别不同文件夹Images、Scripts、Audios、Vedios
开发步骤
1、在Assets中添加Images文件夹,增加需要的贴图图片
2、在Assets中添加Materials文件夹,在文件夹中右键添加Material,命名为BoxMaterial,在Inspecttor中设置纹理等,纹理选用图片,Albedo前小圆点。
3、静态资源绑定
3.1、如果是静态资源,可以直接在Materials设置此项即可
3.2、如果是动态加入
1、先在脚本中增加属性,public Texture BoxMaterial;应该是简化的:public Texture BoxMaterial{get;set;}
2、使用处增加:go.GetComponent<Renderer>().material = BoxMaterial;
private GameObject goPlane;
public Material BoxMaterial; // Use this for initialization
void Start()
{
goPlane = GameObject.Find("Plane");
for (int i = ; i < ; i++)
{
for (int j = ; j < ; j++)
{
GameObject go = GameObject.CreatePrimitive(PrimitiveType.Cube);
go.transform.position = new Vector3(i, j, -);
//if (j % 2 == 0)
//{
// go.GetComponent<Renderer>().material.color = Color.red;
//}
go.AddComponent<Rigidbody>();
go.GetComponent<Renderer>().material = BoxMaterial;
go.AddComponent<AutoDestory>();
}
} }
3、然后在组件对应的脚本上找到此属性

找到相应属性,进行可视化赋值即可,赋值第二部命名的BoxMaterial即可。
三、自定义鼠标指针
屏幕坐标系(ScreenPoint)是以 屏幕 左下角(0,0)右上角(Screen.Width,Screen.Height),向上向右正方向,鼠标的位置Input.mousePosition是屏幕坐标系;GUI则是常规的以左上角为(0,0),向下向右为正方向。Screen.Width,Screen.Width是游戏屏幕的大小,不是电脑屏幕的大小;Screen.showCursor读写是否显示鼠标光标状态。自定义游侠光标:隐藏光标:5.0以前:在Start中,Screen.showCursor=false;5.0以后:在OnGUI中,Cursor.visible = false;声明属性public Texture CursorTexture找一个png格式鼠标图片放到Project中,拖后CursorTexture属性上;OnGUI中:
1.增加ScreenCursor脚本,并将脚本拖拽至主摄像机,在脚本中增加Texture属性
public Texture CursorTexture;
2、在unity3D中选择具体图片,赋值给上述属性
3、在脚本中增加以下代码【基本代码】
void OnGUI()
{
GUI.DrawTexture(new Rect(, , CursorTexture.width, CursorTexture.height), CursorTexture);
}
4、动态跟随鼠标
void OnGUI()
{
float x = Input.mousePosition.x - CursorTexture.width / ;
float y = Screen.height - Input.mousePosition.y - CursorTexture.height / ;
GUI.DrawTexture(new Rect(x, y, CursorTexture.width, CursorTexture.height), CursorTexture);
}
5、隐藏光标:5.0以前:在Start中,Screen.showCursor=false;5.0以后:在OnGUI中,Cursor.visible = false;
006-unity3d GUI初识、贴图、自定义鼠标指针的更多相关文章
- css Cursor:url()自定义鼠标指针样式为图片
css自定义鼠标指针样式为图片Cursor:url()的使用,今天在项目中,要用到自定义鼠标样式,格式: css:{cursor:url('绝对路径的图片(格式:cur,ico)'),-moz-zoo ...
- [WPF]自定义鼠标指针
原文:[WPF]自定义鼠标指针 [WPF]自定义鼠标指针 周银辉 看看WPF Cursor类的两个构造函数吧: * f)); g.Flush(); g.D ...
- Unity3D GUI中的图片跟随鼠标旋转脚本
var Mid : Texture2D; var mouse : Texture2D; //鼠标图片 var mousePs = Vector2.zero; //鼠标的位置 private var a ...
- Unity3D GUI中的图片尾随鼠标旋转脚本
var Mid : Texture2D; var mouse : Texture2D; //鼠标图片 var mousePs = Vector2.zero; //鼠标的位置 private var a ...
- 自定义鼠标Cursor转变成图片
今天无意做到项目遇到一个好玩的事情,就是当我鼠标移到一个链接上面,并不是像正常那样出现一个小手,而是变成一个小十字架, 下面看图当时第一眼看到总感觉哪里不对,噢噢噢噢 这样的 小手没了,居然是一个图片 ...
- c#自定义鼠标形状
更改鼠标指针,需要使用到 Windows API: 1. 添加命名空间的引用: using System.Runtime.InteropServices; using System.Reflectio ...
- [ActionScript 3.0] AS3.0 本机鼠标指针
Flash Player 10.2添加了内置的本机鼠标指针(native mouse cursor)支持,虽然在之前的版本里我们可以侦听MouseEvent事件来模拟鼠标指针,但是在有了原生的本机鼠标 ...
- Unity3D ShaderLab 静态贴图光照模型
Unity3D ShaderLab 静态贴图光照模型 其实在unity的光照模型中,我们可以把光照讯息烘培进入一个2D贴图,来实现着色器的光照效果. 下面是在unity中关闭灯光和打开灯光的对比效果. ...
- Unity3D ShaderLab 使用贴图对模型的高光进行遮罩
Unity3D ShaderLab 使用贴图对模型的高光进行遮罩 前面研究了高光效果的实现,再说说现很多游戏用到的高光贴图技术,因为它可以让3D美工更容易控制最终的视觉效果. 这也就为我们提供了另外的 ...
随机推荐
- python基本语法学习
前言: 1.python是解释型语言 2.尽量使用python3.2014年的时候python官方宣布2.7支持到2020年,以后不会再发行2.8版本,尽快把程序迁移到3.x版本 基本语法: 1.变量 ...
- UEditor使用报错Cannot set property 'innerHTML' of undefined
仿用UEditor的setContent的时候报错,报错代码如下Uncaught TypeError: Cannot set property ‘innerHTML’ of undefined.调试u ...
- python基础知识的入门介绍
一.什么是编程语言 任何词语都是一种高度的概括和总结,所以找关键字.如下: (1)1.什么是"语言":一个人与另一个人沟通的介质 2人将自己的思维逻辑和想法通过计算机能过识别的语言 ...
- Python学习笔记-列表的增删改查
- 北京师范大学第十五届ACM决赛-重现赛J Just A String (kmp算法延伸)
链接:https://ac.nowcoder.com/acm/contest/3/J 来源:牛客网 Just A String 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 2621 ...
- java多线程sleep,wait,yield方法区别
sleep() 方法sleep()的作用是在指定的毫秒数内让当前“正在执行的线程”休眠(暂停执行).这个“正在执行的线程”是指this.currentThread()返回的线程.sleep方法有两个重 ...
- java:集合输出之foreach输出三
java:集合输出之foreach输出三 foreach输出: List<String> allList = new ArrayList<String>(); allList. ...
- 用TweenMax.js动画让数字动起来
html: <div class="val2">0</div> js: let val2 = document.getElementsByClassName ...
- 阿里云视频云正式支持AV1编码格式 为视频编码服务降本提效
今天我们要说的 AV1 可不是我们平时说的 .AVI 文件格式,它是由AOM(Alliance for Open Media,开放媒体联盟)制定的一个开源.免版权费的视频编码格式,可以解决H.265昂 ...
- luogu 4004 Hello world! 分块 + 并查集 + 乱搞
其实呢,我也不理解这道题咋做,等以后有时间再研究研究 #include <bits/stdc++.h> #define ll long long #define maxn 100002 u ...