Unity3D 脚本参考

Unity3D 脚本参考
核心提示:一、脚本概览这是一个关于Unity 内部脚本如何工作的简单概览。Unity 内
部的脚本,是通过附加自定义脚本对象到游戏物体组成的。在脚本对象内部不同志的函数被
特定的事件调用。最常用的列在下面:Update:这个函数在渲染一帧之前被调用,这里是大
部分游戏行为代码被执行的地方,除了物理代码。FixedUpd...
一、脚本概览
这是一个关于Unity 内部脚本如何工作的简单概览。
Unity 内部的脚本,是通过附加自定义脚本对象到游戏物体组成的。在脚本对象内部不同志
的函数被特定的事件调用。最常用的列在下面:
Update:
这个函数在渲染一帧之前被调用,这里是大部分游戏行为代码被执行的地方,除了物理代码。
FixedUpdate:
这个函数在每个物理时间步被调用一次,这是处理基于物理游戏的地方。
在任何函数之外的代码:
在任何函数之外的代码在物体被加载的时候运行,这个可以用来初始化脚本状态。
注意:文档的这个部份假设你是用Javascript,参考用C#编写获取如何使用C#和Boo 编写
脚本的信息。
你也能定义事件句柄,它们的名称都以On 开始,(例如OnCollisionEnter),为了查看完整的
预定义事件的列表,参考MonoBehaviour 文档。
概览:常用操作
大多数游戏物体的操作是通过游戏物体的Transform 或Rigidbody 来做的,在行为脚本内部
它们可以分别通过transform 和rigidbody 访问,因此如果你想绕着Y 轴每帧旋转5 度,你可
以如下写:
function Update(){
transform.Rotate(0,5,0);
}
如果你想向前移动一个物体,你应该如下写:
function Update(){
transform.Translate(0,0,2);
}
概览:跟踪时间
Time 类包含了一个非常重要的类变量,称为deltaTime,这个变量包含从上一次调用Update
或FixedUpdate(根据你是在Update 函数还是在FixedUpdate 函数中)到现在的时间量。
所以对于上面的例子,修改它使这个物体以一个恒定的速度旋转而不依赖于帧率:
function Update(){
transform.Rotate(0,5*Time.deltaTime,0);
}
移动物体:
function Update(){
transform. Translate (0, ,0,2*Time.deltaTime);
}
如果你加或是减一个每帧改变的值, 你应该将它与Time.deltaTime 相乘。当你乘以
Time.deltaTime 时,你实际的表达:我想以10 米/秒移动这个物体不是10 米/帧。这不仅仅
是因为你的游戏将独立于帧而运行,同时也是因为运动的单位容易理解。( 米/秒)
另一个例子,如果你想随着时间增加光照的范围。下面的表达式,以2 单位/秒改变半
径。
function Update (){
light.range += 2.0 * Time.deltaTime;
}
当通过力处理刚体的时候,你通常不必用Time.deltaTime,因为引擎已经为你考虑到了这一
点。
概览:访问其他组件
组件被附加到游戏物体,附加Renderer 到游戏物体使它在场景中渲染,附加一个Camera 使
它变为相机物体,所有的脚本都是组件,因为它们能被附加到游戏物体。
最常用的组件可以作为简单成员变量访问:
Component 可如下访问
Transform transform
Rigidbody rigidbody
Renderer renderer
Camera camera (only on camera objects)
Light light (only on light objects)
Animation animation
Collider collider
…等等。
对于完整的预定义成员变量的列表。查看Component,Behaviour 和MonnoBehaviour 类文档。
如果游戏物体没有你想取的相同类型的组件,上面的变量将被设置为null。
任何附加到一个游戏物体的组件或脚本都可以通过GetComponent 访问。
transform.Translate(0,3,0);
//等同于
GetComponent(Transform).Translate(0, 1, 0);
注意transfom 和Transform 之间大小写的区别,前者是变量(小写),后者是类或脚本名称
(大写)。大小写不同使你能够从类和脚本名中区分变量。
应用我们所学,你可以使用GetComponent 找到任何附加在同一游戏物体上的脚本和组件,
请注意要使用下面的例子能够工作,你需要有一个名为OtherScript 的脚本,其中包含一个
DoSomething 函数。OtherScript 脚本必须与下面的脚本附加到相同的物体上。
//这个在同一游戏物体桑找到名为OtherScript 的脚本
//并调用它上加的DoSomething
function Update(){
otherScript = GetComponent(OtherScript);
otherScript.DoSomething();
}
概览:访问其它游戏物体
大多数高级的代码不仅需要操作一个物体,Unity 脚本接口有各种方法来找到并访问其他游
戏物体和组件。在下面,我们假定有个一名为OtherScript,js 的脚本附加到场景的游戏物体
上。
var foo = 5;
function DoSomething ( param : String) {
print(param + " with foo: " + foo);
}
1.通过检视面板赋值引用
你可以通过检视面板赋值变量到任何物体
//变换拖动到target 的物体
var target : Transform;
function Update ()
{
target.Translate(0, 1, 0);
}
你也可以在检视面板中公开到其他物体的引用,下面你可以拖动一个包含的游戏物体到检视
面板中的target 槽。
//设置在检视面板中赋值的target 变量上的foo,调用DoSomething
var target : OtherScript;
function Update ()
{
//设置target 物体的foo 变量
target.foo = 2;
// 调用target 上的DoSomething
target.DoSomething("Hello");
}
2.通过物体层次定位
对于一个已经存在的物体,可以通过游戏物体的Transform 组件来找到子和父物体;
//找到脚本所附加的
//游戏物体的子“Hand”
transform.Find("Hand").Translate(0, 1, 0);
一旦在层次视图中找到这个变换,你可以使用GetComponent 来获取其他脚本,
//找到名为“Hand”的子
//在附加到它上面的OtherScript 中,设置foo 为2;
transform.Find("Hand").Translate(0, 1, 0);
//找到名为“Hand”的子
//然后应用一个力到附加在hand 上的刚体
transform.Find("Hand").GetComponent(OtherScript).DoSomething("Hello");
// 找到名为“Hand”的了
// 然后应用一个力到附加在hand 上的刚体
transform.Find("Hand").rigidbody.AddForce(0, 10, 0);
你可以循环所有的子,
//变换的所有子向上移动10 个单位
for (var child : Transform in transform)
{
child.Translate(0, 1, 0);
}
参考Transform 类文档获取更多信息。
3.根据名称或标签定位.
你可以使用GameObject.FindWithTag 和GameObject.FindGameObjectsWithTag 搜索具有特定
标签的游戏物体,使用GameObject.Find 根据名称查找物体。
function Start ()
{
// 按照名称
var go = GameObject.Find("SomeGuy");
go.transform.Translate(0, 1, 0);
// 按照标签
var player = GameObject.FindWithTag("Player");
player.transform.Translate(0, 1, 0);
}
你可以在结果上使用GetComponent,在找到的游戏物体上得到任何脚本或组件。
function Start ()
{
// 按名称
var go = GameObject.Find("SomeGuy");
go.GetComponent(OtherScript).DoSomething();
// 按标签
var player = GameObject.FindWithTag("Player");
player.GetComponent(OtherScript).DoSomething();
}
一些特殊的物体有快捷方式,如主相机使用Camera.main。
4.作为参数传递
一些事件消息在事件包含详细信息。例如,触发器事件传递碰撞物体的Collider 组件到处理
函数。
OnTriggerStay 给我们一个到碰撞器的引用。从这个碰撞器我们可以获取附加到其上的刚体。
function OnTriggerStay( other : Collider ) {
// 如果另一个碰撞器也有一个刚体
// 应用一个力到它上面
if (other.rigidbody) {
other.rigidbody.AddForce(0, 2, 0);
}
}
或者我们可以通过碰撞器获取附加在同一个物体上的任何组件。
function OnTriggerStay( other : Collider ) {
// 如果另一个碰撞器附加了OtherScript
// 调用它上面的DoSomething
// 大多数时候碰撞器不会附加脚本
// 所以我们需要首先检查以避免null 引用异常
if (other.GetComponent(OtherScript)) {
other.GetComponent(OtherScript).DoSomething();
}
}
注意通过上述例子中的other 变量,你可以访问碰撞物体中的任何组件。
5.一种类型的所有脚本
使用Object.FindObjectsOfType 找到所有具有相同类或脚本名称的物体, 或者使用
Object.FindObjectOfType.找到这个类型的第一个物体。
function Start ()
{
// 找到场景中附加了OtherScript 的任意一个游戏物体
var other : OtherScript = FindObjectOfType(OtherScript);
other.DoSomething();
}
概览:向量
Unity 使用Vector3 类同一表示全体3D 向量,3D 向量的不同组件可以通过想x,y 和z 成员
变量访问。
var aPosition : Vector3;
aPosition.x = 1;
aPosition.y = 1;
aPosition.z = 1;
你也能够使用Vector3 构造函数来同时初始化所有组件。
var aPosition = Vector3(1, 1, 1);
Vector3 也定义了一些常用的变量值。
var direction = Vector3.up; // 与Vector3(0, 1, 0);相同
单个向量上的操作可以使用下面的方式访问:
someVector.Normalize();
使用多个向量的操作可以使用Vector3 类的数;
theDistance = Vector3.Distance(oneVector, otherVector);
(注意你必须在函数名之前写Vector3 来告诉JavaScript 在哪里找到这个函数,这适用于所
有类函数)
你也可以使用普通数学操作来操纵向量。
combined = vector1 + vector2;
查看Vector3 类文档获取完整操纵和可用属性的列表。
概览:成员变量& 全局变量变量
定义在任何函数之外的变量是一个成员变量。在Unity 中这个变量可以通过检视面板来访问,
任何保存在成员变量中的值也可以自动随工程保存。
var memberVariable = 0.0;
上面的变量将在检视面板中显示为名为"Member Variable"的数值属性。
如果你设置变量的类型为一个组件类型(例如Transform, Rigidbody, Collider,任何脚本名称,
等等)然后你可以在检视面板中通过拖动一个游戏物体来设置它们。
var enemy : Transform;
function Update()
{
if ( Vector3.Distance( enemy.position, transform.position ) < 10 );
print("I sense the enemy is near!");
}
}
你也可以创建私有成员变量。私有成员变量可以用来存储那些在该脚本之外不可见的状态。
私有成员变量不会被保存到磁盘并且在检视面板中不能编辑。当它被设置为调试模式时,它
们在检视面板中可见。这允许你就像一个实时更新的调试器一样使用私有变量。
private var lastCollider : Collider;
function OnCollisionEnter( collisionInfo : Collision ) {
lastCollider = collisionInfo.other;
}
全局变量
你也可以使用static 关键字创建全局变量
这创造了一个全局变量,名为someGlobal
// 'TheScriptName.js'中的一个静态变量
static var someGlobal = 5;
// 你可以在脚本内部像普通变量一样访问它
print(someGlobal);
someGlobal = 1;
为了从另一个脚本访问它,你需要使用这个脚本的名称加上一个点和全局变量名。
print(TheScriptName.someGlobal);
TheScriptName.someGlobal = 10;
概览:实例化
实例化,复制一个物体。包含所有附加的脚本和整个层次。它以你期望的方式保持引用。到
外部物体引用的克隆层次将保持完好,在克隆层次上到物体的引用映射到克隆物体。
实例化是难以置信的快和非常有用的。因为最大化地使用它是必要的。
例如, 这里是一个小的脚本,当附加到一个带有碰撞器的刚体上时将销毁它自己并实例化
一个爆炸物体。
var explosion : Transform;
// 当碰撞发生时销毁我们自己
// 并生成给一个爆炸预设
function OnCollisionEnter (){
Destroy (gameObject);
var theClonedExplosion : Transform;
theClonedExplosion = Instantiate(explosion, transform.position, transform.rotation);
}
实例化通常与预设一起使用
概览:Coroutines & Yield
在编写游戏代码的时候,常常需要处理一系列事件。这可能导致像下面的代码。
private var state = 0;
function Update()
{
if (state == 0) {
// 做步骤0
state = 1;
return;
}
if (state == 1) {
// 做步骤1
state = 2;
return;
}
// …
}
更方便的是使用yield 语句。yield 语句是一个特殊类型的返回,这个确保在下次调用时该函
数继续从该yield 语句之后执行。
while(true) {
// 做步骤0
yield; //等待一帧
// 做步骤1
yield; //等待一帧
// ...
}
你也可以传递特定值给yield 语句来延迟Update 函数的执行,直到一个特定的事件发生。
// 做一些事情
yield WaitForSeconds(5.0); //等待5 秒
//做更多事情…
可以叠加和连接coroutines。
这个例子执行Do,在调用之后立即继续。
Do ();
print ("This is printed immediately");
function Do ()
{
print("Do now");
yield WaitForSeconds (2);
print("Do 2 seconds later");
}
这个例子将执行Do 并等待直到它完成,才继续执行自己。
//链接coroutine
yield StartCoroutine("Do");
print("Also after 2 seconds");
print ("This is after the Do coroutine has finished execution");
function Do ()
{
print("Do now");
yield WaitForSeconds (2);
print("Do 2 seconds later");
}
任何事件处理句柄都可以是一个coroutine
注意你不能在Update 或FixedUpdate 内使用yield,但是你可以使用StartCoroutine 来开始一
个函数。
参考YieldInstruction, WaitForSeconds, WaitForFixedUpdate, Coroutine and
MonoBehaviour.StartCoroutine 获取更多使用yield 的信息。
概览:用C#编写脚本
除了语法,使用C#或者Boo 编写脚本还有一些不同。最需要注意的是:
1.从MonoBehaviour 继承
所有的行为脚本必须从MonoBehaviour 继承(直接或间接)。在Javascript 中这自动完成,但
是必须在C#或Boo 脚本中显示申明。如果你在Unity 内部使用Asset -> Create -> C Sharp/Boo
Script 菜单创建脚本,创建模板已经包含了必需的定义。
public class NewBehaviourScript : MonoBehaviour {...} // C#
class NewBehaviourScript (MonoBehaviour): ... # Boo
2.使用Awake 或Start 函数来初始化
Javascript 中放置在函数之外的代码,在C#或Boo 中要放置在Awake 或Start 中。
Awake 和Start 的不同是Awake 在场景被加载时候运行,而Start 在第一次调用Update 或
FixedUpdate 函数之前被调用,所有Awake 函数在任何Start 函数调用之前被调用。
3.类名必须与文件名相同
Javascript 中,类名被隐式地设置为脚本的文件名(不包含文件扩展名)。在c#和Boo 中必
须手工做。
4.在C#中Coroutines 有不同语法。
Coroutines 必有一个IEnumerator 返回类型,并且yield 使用yield return… 而不是yield…
using System.Collections;
using UnityEngine;
public class NewBehaviourScript : MonoBehaviour {
// C# coroutine
IEnumerator SomeCoroutine ()
{
// 等一帧
yield return 0;
//等两秒
yield return new WaitForSeconds (2);
}
}
5.不要使用命名空间
目前Unity 还不支持将代码放置在一个命名空间中,这个需要将会出在未来的版本中。
6.只有序列化的成员变量会显示在检视面板中
私有和保护成员变量只在专家模式中显示,属性不被序列化或显示在检视面板中。
7.避免使用构造函数
不要在构造函数中初始化任何变量,使用Awake 或Start 实现这个目的。即使是在编辑模式
中Unity 也自动调用构造函数,这通常发生在一个脚本被编译之后,因为需要调用构造函数
来取向一个脚本的默认值。构造函数不仅会在无法预料的时刻被调用,它也会为预设或未激
活的游戏物体调用。
单件模式使用构造函数可能会导致严重的后果,带来类似随机null 引用异常。
因此如果你想实现,如,一个单件模式,不要使用构造函数,而是使用Awake。其实上,没
有理由一定要在继续自MononBehaviour 类的构造函数中写任何代码。
概览:最重要的类
Javascript 中可访问的全局函数或C#中的基类
移动/旋转物体
动画系统
刚体
FPS 或第二人称角色控制器
概览:性能优化
1.使用静态类型
在使用Javascript 时最重要的优化是使用静态类型而不是动态类型,Unity 使用一种叫做类型
推理的技术来自自动转换Javascript 为静态类型编码而不需要你做任何工作。
var foo=5;
在上面的例子里foo 会自动被推断为一个整型值。因此,Unity 可能使用大量的编译时间来
优化。而不使用耗时的动态名称变量查找等。这就是为什么Unity 比其他在JavaScript 的实
现平均快20 倍的原因之一。
唯一的问题是,有时并非一切都可以做类型推断。Unity 将会为这些变量重新使用动态类型。
通过回到动态类型,编写JavaScript 代码很简单。但是这也使得代码运行速度较慢。
让我们看一些例子:
function Start ()
{
var foo = GetComponent(MyScript);
foo.DoSomething();
}
这里foo 将是动态类型,因此调用DoSomething 函数将使用较长时间,因为foo 的类型是未
知的,它必须找出它是否支持DoSomething 函数,如果支持,调用它。
function Start ()
{
var foo : MyScript = GetComponent(MyScript);
foo.DoSomething();
}
这里我们强制foo 为指定类型,你将获得更好的性能。
2.使用#pragma strict
当然现在问题是,你通常没有意识到你在使用动态类型。#pragma strict 解决了这个!简单的
在脚本顶部添加#pragma strict。然后,unity 将在脚本中禁用动态类型,强制使用静态类型,
如果一个类型未知。Unity 将报告编译错误。那么在这种情况下foo 将在编译时产生一个错
误:
#pragma strict
function Start ()
{
var foo = GetComponent(MyScript);
foo.DoSomething();
}
3.缓存组件查找
另一个优化是组件缓存。不幸的是该优化需要一点编码,并且不一定是值得的,但是如
果你的脚本是真的用了很长时间了,你需要把最后一点表现出来,这是一个很好的优化。
当你访问一个组件通过GetComponent 或访问变量,Unity 会通过游戏对象找到正确的组件。
这一次可以很容易地通过缓存保存在一个私有变量里引用该组件。
简单地把这个:
function Update ()
{
transform.Translate(0, 0, 5);
}
变成:
private var myTransform : Transform;
function Awake ()
{
myTransform = transform;
}
function Update ()
{
myTransform.Translate(0, 0, 5);
}
后者的代码将运行快得多,因为Unity 没有找到变换在每一帧游戏组件中的对象。这同样适
用于脚本组件,在你使用GetComponent 代替变换或者其它的东西。
4.使用内置数组
内置数组的速度非常快,所以请使用它们。
而整列或者数组类更容易使用,因为你可以很容易地添加元素,他们几乎没有相同的速度。
内置数组有一个固定的尺寸,但大多数时候你事先知道了最大的大小在可以只填写了以后。
关于内置数组最好的事情是,他们直接嵌入在一个结构紧凑的缓冲区的数据类型没有任何额
外的类型信息或其他开销。因此,遍历是非常容易的,作为一切缓存在内存中的线性关系。
private var positions : Vector3[];
function Awake ()
{
positions = new Vector3[100];
for (var i=0;i<100;i++)
positions[i] = Vector3.zero;
}
5.如果你不需要就不要调用函数
最简单的和所有优化最好的是少工作量的执行。例如,当一个敌人很远最完美的时间就是敌
人入睡时可以接受。直到玩家靠近时什么都没有做。这是种缓慢的处理方式的情况:
function Update ()
{
// 早期进行如果玩家实在是太遥远。
if (Vector3.Distance(transform.position, target.position) > 100)
return;
perform real work work...
}
这不是一个好主意,因为Unity 必须调用更新功能,而你正在执行工作的每一个帧。一个比
较好的解决办法是禁用行为直到玩家靠近。有3 种方法来做到这一点:
1.使用OnBecameVisible 和OnBecameInvisible。这些回调都是绑到渲染系统的。只要任何相
机可以看到物体,OnBecameVisible 将被调用,当没有相机看到任何一个,OnBecameInvisible
将被调用。这种方法在很多情况下非常有用,但通常在AI 中并不是特别有用,因为只要你
把相机离开他们敌人将不
可用。
function OnBecameVisible () {
enabled = true;
}
function OnBecameInvisible ()
{
enabled = false;
}
2.使用触发器。一个简单的球形触发器会工作的非常好。一旦你离开这个影响球你将得到
OnTriggerEnter/Exit 调用。
function OnTriggerEnter (c : Collider)
{
if (c.CompareTag("Player"))
enabled = true;
}
function OnTriggerExit (c : Collider)
{
if (c.CompareTag("Player"))
enabled = false;
}
3.使用协同程序。Update 调用的问题是它们每帧中都发生。很可能会只需要每5 秒检检查一
次到玩家的距离。这应该会节省大量的处理周期。
概览:脚本编译(高级)
Unity 编译所有的脚本为.NET dll 文件,.dll 将在运行时编译执行。
这允许脚本以惊人的速度执行。这比传统的javascript 快约20 倍。比原始的C++代码慢大约
50%。在保存的时候,Unity 将花费一点时间来编译所有脚本,如果Unity 还在编译。你可
以在Unity 主窗口的右下角看到一个小的旋转进度图标。
脚本编译在4 个步骤中执行:
1.所有在"Standard Assets", "Pro Standard Assets" 或"Plugins"的脚本被首先编译。
在这些文件夹之内的脚本不能直接访问这些文件夹之外脚本。
不能直接引用或它的变量,但是可以使用GameObject.SentMessage 与它们通信。
2.所有在"Standard Assets/Editor", "Pro Standard Assets/Editor" 或"Plugins/Editor"的脚本被首
先编译。
如果你想使用UnityEditor 命名空间你必须放置你的脚本在这些文件夹中,例如添加菜单项
或自定义的向导,你都需要放置脚本到这些文件夹。
这些脚本可以访问前一组中的脚本。
3.然后所有在"Editor"中的脚本被编译。
如果你想使用UnityEditor 命名空间你必须放置你的脚本在这些文件夹中。例如添加菜单单
项或自定义的向导,你都需要放置脚本到这些文件夹。
这些脚本可以访问所有前面组中的脚本,然而它们不能访问后面组中的脚本。
这可能会是一个问题,当编写编辑器代码编辑那些在后面组中的脚本时。有两个解决方法:
1、移动其他脚本到"Plugins"文件夹2、利用JavaScript 的动态类型,在javascript 中你不需
要知道类的类型。在使用GetComponent 时你可以使用字符串而不是类型。你也可以使用
SendMessage,它使用一个字符串。
4.所有其他的脚本被最后编译
所有那些没有在上面文件夹中的脚本被最后编译。
所有在这里编译的脚本可以访问第一个组中的所有脚本("Standard Assets","Pro
Standard Assets" or "Plugins")。这允许你让不同的脚本语言互操作。例如,如果你想创建一
个JavaScript。它使用一个C#脚本;放置C#脚本到"Standard Assets"文件夹并且JavaScript 放
置在"Standard Assets"文件夹之外。现在JavaScript 可以直接引用c#脚本。
放置在第一个组中的脚本,将需要较长的编译时间,因为当他们被编译后,第三组需要被重
新编译。因此如果你想减少编译时间,移动那些不常改变的到第一组。经常改变的到第四
组。
二、运行时类
AnimationCurve

动画曲线,在给定的时间添加关键帧并确定曲线。
变量
◆ var keys : Keyframe[]
描述:定义在动画曲线中的所有键。这让你从数组中清理,添加或移除键。
如果键没有按照时间顺序,它们会在赋值的时候自动排序。
◆ var length : int
描述:曲线中键的数量(只读)。
◆ var preWrapMode : WrapMode
描述:第一帧之前动画的行为。
◆ var this[index : int] : Keyframe
描述:取向索引为index 的键(只读)。
构造函数
◆ static function AnimationCurve(params keys : Keyframe[]) : AnimationCurve
描述:从任意数量的关键帧创建一个动画曲线。
该函数从可变数量的Keyframe 参数创建一个曲线,如果你想从一个关键帧数组中创建一个
曲线,创建一个空的曲线并指定keys 属性。
//一个慢退慢出的动画曲线(切线都是平的)。
var curve = new AnimationCurve(Keyframe(0, 0), Keyframe(1, 1);
function Update ()
{
transform.position.x = Time.time;
transform.position.y = curve.Evaluate(Time.time);
}
◆ static function AnimationCurve () : AnimationCurve
描述:创建一个空的动画曲线
函数
◆ function AddKey (time : float, value : float) : int
描述:添加一个新的键到曲线。
平滑切线将被自动为该键的计算,返回该键的索引,如果因为在同一时间上已经有另一个关
键帧而不能添加键,将返回-1。
◆ function AddKey (key : Keyframe) : int
描述:添加一个新的键到曲线。
返回该键的索引,如果因为在同一时间上已经有另一个关键帧而不能添加键,将返回-1。
◆ function Evaluate (time : float) : float
描述:该动画曲线在time 的值。
◆ function MoveKey (index : int, key : Keyframe) : int
描述:移除index 处的关键帧并插入键。
如果一个关键帧已经存在于key-time,老的关键帧位置时间key[index].time/将被用来替换,
这对于在一个曲线编辑器中拖动关键帧是一个理想的行为,移动它后返回关键帧的索引。
◆ function RemoveKey (index : int) : void
描述:移除一个键
◆ function SmoothTangents (index : int, weight : float) : void
描述:平滑位于index 处的关键帧的进出切线。
权值为0 时平均切线。
类方法
◆ static function EaseInOut (timeStart : float, valueStart : float, timeEnd : float, valueEnd :
float) : AnimationCurve
描述:一个渐进渐出的曲线,开始于timeStart,valueStart 并结束于timeEnd, valueEnd.
◆ static function Linear (timeStart : float, valueStart : float, timeEnd : float, valueEnd : float) :
AnimationCurve
描述:一个直线,开始于timeStart,valueStart 并结束于timeEnd, valueEnd.
AnimationEvent

AnimationEvent 类似于SendMessage 让你调用一个脚本函数,这个脚本是动画播放的一部分。
变量
◆ var animationState : AnimationState
描述:引发这个事件的动画状态。
当这个方法在动画事件回调之外被调用用时返回null。
◆ var date:string
描述:存储在动画剪辑中的字符串数据并将被发送到动画事件。
◆ var functionName : string
描述:被调用的函数的名称
这与调用gameObject.SendMessage(animationEvent.functionName,animationEvent)相同;
◆ var messageOptions :SendMessageOptions
描述:如果选项被设置为SendMessageOptions.RequireReceiver(缺省),当消息没有被任何
组件接收时将打印一个错误消息。
◆ var time:float
描述:该事件被引发的时间。
构造函数
◆ static function AnimationEvent () : AnimationEvent
描述:创建一个新的动画事件
AnimationState

AnimationState 完全控制动画混合。
在大多数情况下Animation 接口就足够了,并且更容易使用。如果你需要完全控制动画播放
过程中的混合时,使用AnimationState。
当动画播放时,AnimationState 允许你修改速度,权值。时间和层。也可以设置动画合成和
wrapMode
动画
变量
◆ var blendMode : AnimationBlendMode
描述:使用哪个混合模式?
// 设置leanLeft 动画为附加混合
animation["leanLeft"].blendMode = AnimationBlendMode.Additive;
◆ var clip :AnimationClip
描述:该动画状态播放的剪辑。
// 打印动画剪辑的帧频到控制台
print(animation[“walk”]clio.frameRate);
◆ var enabled : bool
描述:启用/禁用动画
对于需要考虑任何影响的动画,权值需要设置成为一个大于零的值。如果动画被禁用,时间
将暂停直到动画再次启用。
// 启用walk 循环
animation["Walk"].enabled = true;
animation["Walk"].weight = 1.0;
◆ var layer : int
描述:动画的层。在计算混合权值时,位于较高层的动画将首先获得它们的权值。
只有较高层的动画没有使用完全全部权值时,较低层的动画才能接收混合权值。
// 放置walk 和run 动画在层1
animation["Walk"].layer = 1;
animation["Run"].layer = 1;
◆ var length : float
描述:动画剪辑的长度,以秒计。
// 打印Walk 动画的长度
print (animation["Walk"].length);
◆ var name :string
描述:动画的名称。
◆ var normalizedSpeed : float
描述:归一化播放速度。
这最常用于混合两个动画时同步播放速度。在多数情况下使用animation.SyncLayer 是更容
易也更好
// 同步run 和walk 速度
animation["Run"].normalizedSpeed = animation["Walk"].speed;
◆ var normalizedTime : float
描述:动画的当前归一化时间。
1 为动画的末端。0.5 为动画的中部。
// 快进到动画的中部
animation["Walk"].normalizedTime = 0.5;
◆ var speed : float
描述:动画的播放速度。1 为正常播放速度。
负的播放速度将回放动画。
// 向后走
animation["Walk"].speed = -1.0;
// 以双倍速度行走
animation["Walk"].speed = 2;
◆ var time :float
描述:动画的当前时间
如果时间大于长度它将按照wrapMode 回绕。该值可以大于动画的长度。看这种情况下播放
模式将在采样前重映射时间。这个值从0 到无穷。
// 回退walk 动画
animation["Walk"].time = 0.0;
◆ var weight : float
描述:动画的权值
// 设置walk 动画的混合权值为0.5
animation["Walk"].weight = 0.5;
◆ var wrapMode : WrapMode
描述:动画的回绕模式
默认的wrapMode 被初始化为在Animation 组件中设置的回绕模式值。
// 设置walk 动画回绕模式为循环
animation["Walk"].wrapMode = WrapMode.Loop;
函数
◆ function AddMixingTransform (mix : Transform, recursive : bool = true) : void
描述:添加应该被动画的变换。这允许你缩减需要创建的动画数量。
例如你可能有一个挥手的动画。你可能想在一个空闲角色或行走的角色上播放挥手动画。那
么你需要为空闲和行走分别创建挥手动画。运用合成挥手动画,它将由肩膀完全控制。但是
下半身不会受它的影响,继续播放空闲或行走动画。因此你只需要一个挥手动画。
如果recursive 为真,所有mix 变换的子也都将被动画。如果你不调用AddMixingTransform,
所有动画曲线将被使用。
// 使用路径添加混合
var shoulder : Transform;
animation["wave_hand"].AddMixingTransform(shoulder);
function Start ()
{
//使用路径添加混合变换
var mixTransform = transform.Find("root/upper_body/left_shoulder");
animation["wave_hand"].AddMixingTransform(mixTransform);
}
Application

访问应用程序的运行时数据。
这个类包含静态的方法来查找相关的信息并控制运行时数据。
类变量
◆ static var absoluteURL : string
描述:到web 播放器数据文件夹的绝对路径(只读)。
Application.absoluteURL 和Application.srcValue 允许你检测unityWeb 数据文件是否被移动或
链接接到其他位置。你也许想保护这两者来防止盗用数据文件的行为。
// 检测你的数据文件是否被移动到其他的服务器
// 或是被链接到其他地方
function Start ()
{
var isPirated = false;
if (Application.platform == RuntimePlatform.WindowsWebPlayer ||Application.platform ==
RuntimePlatform.OSXWebPlayer)
{
if (Application.srcValue != "game.unity3d")
isPirated = true;
if (String.Compare
(Application.absoluteURL,http://www.website.com/Game/game.unity3d,true)!=0)
isPirated = true;
if (isPirated)
print("Pirated web player");
}
}
◆ static var dataPath : string
描述:包含游戏数据文件夹的路径(只读)。
这个值依赖于运行的平台:
Unity 编辑器: <工程文件夹的路径>/Assets
Mac 播放器: <到播发器应用的路径>/Contents
Win 播放器: < 包含可执行播发器的文件夹的路径>\Data
Dasboard 窗口: < dashboard widget bundle 的路径>
Web 播放器: 到播放器数据文件夹的绝对路径(没有实际的数据文件名称)
// 打印到数据文件夹的路径
Print(Application.dataPath);
◆ static var isEditor : bool
描述:是在Unity 编辑器内运行?(只读)
如果游戏从Unity 编辑器中运行,返回真;如果从其他部署目标运行返回假。
if (Application.isEditor)
{
print("We are running this from inside of the editor!");
}
◆ static var isLoadingLevel : bool
描述:正在加载某些关卡?(只读)
LoadLevel 和LoadLevelAdditive 不会立即发生一个新的关卡在当前游戏帧之后被加载。如
果关卡加载所请求的帧已经完成isLoadingLevel 返回true。
参见:LoadLevel,LoadLevelAdditive
◆ static var isPlaying : bool
描述:在任何类型的播放器中时返回真(只读)。
在Unity 编辑器中,如果处于播放模式时返回真。
if (Application.isPlaying)
{
print("In player or playmode");
}
◆ static var levelCount : int
描述:可用的总关卡数(只读)。
// 加载一个随机的关卡
Application.LoadLevel (Random.Range(0, Application.levelCount-1));
◆ static var loadedLevel : int
描述:最后一个被加载的关卡的索引(只读)。
print (Application.loadedLevel);
◆ static var loadedLevelName : string
描述:最后一个被加载的关卡的名称(只读)。
print (Application.loadedLevelName);
◆ static var platform : RuntimePlatform
描述:返回游戏运行的平台(只读)。
如果你要做一些平台相关的操作使用这个属性。参见:RuntimePlatform
function Start ()
{
if (Application.platform == RuntimePlatform.WindowsPlayer)
print ("Do something special here!");
}
◆ static var runInBackground : bool
描述:应用程序在后太时是否应该被运行?
默认为假(当程序在后台时暂停)。
// 让游戏运行,即使是在后台
Application.runInBackground = true;
◆ static var srcValue : string
描述:相对于html 文件的web 播放器数据文件的路径(只读)。
这是被写到html 文件中的路径,它是作为object 的src 参数和cmbed 标签。因此如果它是
绝对url,srcvalue 将含有绝对路径。
Application.absoluteURL 和Application.srcValue 允许你检测你的unityWeb 数据文件是否被
移动或链接到其他位置。你也许想保护这两者来阻止盗用数据文件的行为。
// 检测你的数据文件是否被移到其他的服务器
// 或是被链接到其他地方
function Start ()
{
Var isPirated = false;
if (Application.platform == RuntimePlatform.WindowsWebPlayer ||Application.platform ==
RuntimePlatform.OSXWebPlayer)
{
if (Application.srcValue != "game.unity3d")
isPirated = true;
if (String.Compare
(Application.absoluteURL,"http://www.website.com/Game/game.unity3d",true)!= 0)
isPirated = true;
if (isPirated)
print("Pirated web player");
}
}
◆ static var streamedBytes : int
描述:我们从主Unityweb 流中下载了多少字节(只读)。
在web 播放器中这将返回到目前为止已经下载的压缩字节数。在独立模式或编辑器中
这个总是返回零。
参见:GetStreamProgressForLevel 函数
◆ static var targetFrameRate : int
描述:命令游戏尝试以一个特定的帧率渲染。
设置targetFrameRate 为-1(默认)使独立版游戏尽可能快的渲染,并且web 播放器游戏以
50-60 帧/秒渲染,取决于平台。
注意设置targetFrameRate 不会保证帧率,会因为平台的不同而波动,或者因为计算机太慢
而不能取得这个帧率。
在编辑器中targetFrameRate 被忽略。
◆ static var unityVersion : string
描述:用于播放内容的Unity 运行时版本。
类方法
◆ static function CancelQuit () : void
描述:取消退出。这可以用来在退出游戏的时候显示一个退出画面。
这个函数只工作在播发器中,在web 播放器或编辑器中不做任何事。
// 延迟2 秒退出。
// 在这段时间内加载退出画面
var showSplashTimeout = 2.0;
private var allowQuitting = false;
function Awake () {
// 需要在多个关卡中使用的游戏物体
DontDestroyOnLoad (this);
}
function OnApplicationQuit () {
// 如果我们还没有加载到最后的退出画面
if (Application.loadedLevelName.ToLower()!= "finalsplash")
StartCoroutine("DelayedQuit");
// Don't allow the user to exit until we got permission in
if (!allowQuitting)
Application.CancelQuit();
}
function DelayedQuit ()
{
Application.LoadLevel("finalsplash");
// 等待showSplashTimecout
yield WaitForSeconds(showSplashTimeout);
// 然后退出
allowQuitting = true;
Application.Quit();
}
◆ static function CanStreamedLevelBeLoaded(levelIndex : int) : bool
描述:可以加载流式关卡了吗?
参见:GetStreamProgressForLevel 函数。
◆ static function CanStreamedLevelBeLoaded(levelName : string) : bool
描述:可以加载流式关卡了吗?
参见:GetStreamProgressForLevel 函数。
◆ static function CaptureScreenshot(filename : string) : void
描述:截取屏幕为PNG 文件放置在路径filename。
如果文件已经存在,它将被覆盖。如果在web 播放器或者Dashboard 窗口中使用该函数,它
将不做任何事情。
function OnMouseDown () {
Application.CaptureScreenshot("Screenshot.png");
}
◆ static function ExternalCall(functionName:string,params args:object[]):void
描述:调用一个包含中网页中的函数(只用于Web Player)。
调用包含在网页中名为functionNameJavaScript 函数,并传递给定的参数。支持原始的数据
类型(string, int, float, char)和这些类型的数字。如何其他的对象被转化为字符串(使用
ToString 方法)并作为字符串传递。
传递的参数数量是可变的。
// 调用网页上的MyFunction1 并不使用参数。
Application.ExternalCall ("MyFunction1");
//调用网页上的MyFunction2 并使用字符串参数。
Application.ExternalCall ("MyFunction2", "Hello from Unity!");
//调用网页上的MyFunction3 并使用几个不同类型的参数。
Application.ExternalCall ("MyFunction3", "one", 2, 3.0);
被调用的在HTML 中的函数只需要使用标准的语法即可,例如:
<script language="JavaScript" type="text/javascript">
<!—
// 使用来自Unity 的调用,这将接受
// "Hello from Unity!" 做为参数
function MyFunction2( arg )
{
alert( arg );
}
-->
</script>
See Also: Browser to Unity communication, Application.ExternalEval.
◆ static function ExternalEval (script : string) : void
描述:调用包含在网页中的片段脚本函数(只用于Web Player)。
这将执行包含在网页中JavaScript 片段script
// 导航到前一个页面
Application.ExternalEval ("history.back()");
See Also: Browser to Unity communication, Application.ExternalCall.
◆ static function GetStreamProgressForLevel(levelIndex : int) : float
描述:下载了多少?
在web 播放器中这将返回这个关卡的进度。
参见:CanStreamedLevelBeLoaded
◆ static function GetStreamProgressForLevel (levelName : string) : float
描述:下载了多少?[ 0......1]
在web 播放器中这将返回关卡的进度。
参见:CanStreamedLeverlBeLoaded 函数。
◆ static function LoadLevel(index : int) : void
描述:加载关卡。
这个函数按照索引加载关卡。在Unity 中使用File->Build Settings.....菜单可以看到所有关卡
的索引列表。在你能过加载关卡之前你必须将它添加到游戏使用关卡列表中。在Unity 中使
用File->Build Settings.....并添加你需要的关卡到关卡列表中。
//加载索引为0 的关卡
Application . LoadLevel(0);
当加载崭新的关卡时,所有已经加载的游戏物体都将被销毁。如果你想让物体在被加载新
关卡时不被销毁,使用Object.DontDestroyOnLoad 。
◆ Static function LoadLevel( name : string) : void
描述:按照它的名称加载关卡。
在你能够加载关卡之前你必须将它添加到游戏使用的关卡列表中。在Unity 中使用
File->Build Settings..... 并添加你需要的关卡到关卡列表中。关卡被加载所有激活物体上的
MonoBehaviour . OnLevelWasLoaded 都被调用。
// 加载名为“HighScore”的关卡。
Application . LoadLevel("HighScore");
当加载新的关卡时,所有已经加载的游戏物体都将被销毁。如果你想让物体在加载新
关卡时不被销毁,使用Object. DontDestroyOnLoad。
◆ static function LoadLevelAdditive ( index : int ) : void
◆ static function LoadLevelAdditive (name : string ) : void
描述:额外地加载一个关卡。
不同于LoadLevel,LoadLeavelAdditive 不会销毁当前关卡中的物体。新关卡中的物体
将被添加到当前关卡。这对于创建连续的虚拟世界时非常有用的,当你走过时更多的内
荣被加载。
◆ static function OpenURL( url : string ) : void
描述:在浏览器中打开url 。
在编辑器或者独立播放器模式下,这将在缺省的浏览器中使用新页打开url 。这将是浏
览器位于前端。
但在网页中执行时,包含插件的页将被重定向到url 。
Function Start ( ) {
Application . OpenURL ("http://unity3d.com");
}
◆ Static function Quit ( ) : void
描述:退出应用程序。在编辑器或者web 播放器中退出被忽略。
//当用户点击escape 时退出播放器
Function Update ( ){
If ( Input GetKey ( "escape" )){
Application . Quit ( ) ;
}
}
Array

数组允许你将多个对象存储在一个变量中。
Array 类只能用于JavaScript 。更多关于C#或JavaScript 中ArrayLists ,字典或哈希表的信
息参考MSDN 。
这是一个基本的例子,说明可以使用一个数组类做什么
function Start( )
{
var arr = new Array ( ) ;
arr.Push ("Hello"); //添加一个元素
Print(arr[ 0]); //打印第一个元素
arr length = 2 ; //调整数组大小
arr [ 1] = "World"; //将“World”赋给第二个元素
for (var value : String in arr) //遍历这个数组
{
Print ( value );
}
}
Unity 中有两种类型的数组,内置数组和普通的JavaScript 数组。
内置的数组(原始的.NET 数组),是非常快速和有效的但是它们不能被调整大小。
它们是静态类型的,这允许它们在检视面板中被编辑。这是如何使用内置数组的简单例子。
//在检视面板中公开一个浮点数组,你可以在那里编辑它
var value : float[ ];
Function Start ( )
{
//遍历数组
for ( var value in values){
Print ( value );
}
//因为我们不能调整内置数组的大小
//我们必须重新创建一个数组来调整它的大小
value = new float[ 10 ];
value[ 1 ] = 5.0;//给第二个元素赋值
}
内置数组在性能相关的代码中非常有用的(使用Unity 的JavaScript 和内置数组可以非常容易
使用mesh interface 在一秒内处理两万个顶点。) 另一方面,普通的JavaScript 数组可以调
整大小,排序并可以做所有你期望的数组类的操作。JavaScript 数组不显示在检视面板中。
你可以容易地在JavaScript 数组和内置数组之间转换。
function Start ( )
{
var array = new Array ( Vector3(0,0,0),Vector3(0,0,1));
array .Push (Vector3 (0,0,2));
array .Push (Vector3 (0,0,3));
//拷贝js 数组到内置数组
var builtinArray : Vector3[ ] = array . ToBuiltin ( Vector3 );
//将内置数组赋给js 数组
var newarr = new Array ( builtinArray );
//newarr 与array 包含相同的元素
print ( newarr );
}
注意按照Unity 的命名规则下面所有函数均大写开头。为方便JavaScript 用户, Unity 数组
类也接受小写函数。
变量
◆ var length : int
描述:数组的长度属性,返回或设置数组中元素的数量。
function Start ( )
{
var arr = Array ( "Hello" , "World" ) ;
print (arr . length ) ; //打印两个
arr . Length = 5 ; //调整数组的大小为5
}
函数
◆ function Add ( value : object ) : void
描述:添加value 到数组末端。
var arr = new Array ("Hello");
arr.Add (" World ");
Print ( arr ); //打印"Hello ","World"
◆ function Clear ( ) : void
描述: 清空数组。数组的长度将为零。
var hello = new Array ("Hello ","World ");
hello.Clear ( ) ; //现在hello 包含零个元素
◆ function Concat ( array :Array , optionalArray0: Array, optionalArray1 : Array):Array
描述:连接两个或多个数组。这个方法不会改变已有的数字并返回连接后的数组拷贝
function Start ( ) {
var arr = new Array ("Hello","World"):
var arr2 = new Array ("!");
var joined = arr.Concat ( arr2 ); //现在jointed 包含所有3 个字符串
Print ( joined ); //打印"Hello","World","!"
}
◆ function Join ( seperator :string ) : String
描述:链接数组内容为一个字符串。元素将被seperator 字符串分割,并返回数组的拷贝
function Start ( ){
var arr = new Array ("Hello" , "World");
print ( arr . join (" , "));//打印"Hello,World"
}
◆ function Pop ( ) : object
描述:移除数组最后一个元素并返回它。
var arr = new Array ("Hello ","World");
arr . Pop ( );
print ( arr );//只打印"Hello"
◆ function Push (value : object) : int
描述: 添加value 到数组末端。并返回新数组长度。
var arr = new Array ("Hello");
arr.Push ("World");
print ( arr );//打印"Hello","World"
◆ function RemoveAt (index : int ) : void
描述:从数组中移除索引为index 的元素。
var arr = new Array ("Hello" , " and good morning" , "World ");
arr.Remove ( 1 ) ; //移除"and good morning"
print ( arr );//打印" Hello World "
◆ function Reverse () : Array
描述:颠倒数组中所有元素顺序。
var hello = new Array (" Hello " ," World ") ;
hello Reverse( ) ;
print (hello);//打印World,Hello
◆ function Shift ( ) :object
描述:移除数组的第一个元素并返回它。
var arr = new Array ( " Hello " , " World ");
arr . Shift ( ) ;
print ( " World " ) ; //现在arr 只包含" World "
◆ function Sort( ) : Array
描述:排序所有数组元素
var hello = new Array ( " e " ," a " ," b ");
hello . Sort ( ) ;
print ( hello ) ;// 打印a ,b ,c
◆ function Unshift ( newElement : object , optionalElement : object ) : int
描述: Unshift 添加一个或多个元素到数组的开始位置并返回新的数组长度。
var arr = new Array (" Hello "," World ");
arr . Unshift (" This "," is ");
print ( arr ) ;//打印This,is,Hello,World
BitStream

BitStream 类表示序列化的变量,打包到一个流中。
数据可以被序列化,传输,然后远端使用这个类接受。参考Network View component reference
获取关于网络同步的信息和Network. OnSerializeNetworkView 函数获取更多信息。
变量
◆ var isReading : bool
描述:这个BitStream 现在在被读吗?
参考Network. OnSerializeNetworkView
◆ var isWriting : bool
描述:这个BitStream 现在在被写吗?
参考Network. OnSerializeNetworkView
函数
◆ function Serialize (ref value : bool ) : void
◆ function Serialize (ref value : char ) : void
◆ function Serialize (ref value : short) : void
◆ function Serialize (ref value : int ) : void
◆ function Serialize (ref value : float , maxDelta : float = 0.00001F) : void
◆ function Serialize (ref value : Quaternion, maxDelta : float = 0.00001F) : void
◆ function Serialize (ref value : Vector3, maxDelta : float = 0.00001F) : void
◆ function Serialize (ref value : NetworkPlayer ) : void
◆ function Serialize (ref viewID: NetworkViewID ) : void
描述:BitStream 类可以序列化几个不同类型的变量。
包含:bool , char , short , int , float , Quaternion , Vector3 和NetworkPlayer
注意serialize ( char )系列化一个字节,因此,它只能用于0......255 之间的字符。
BoneWeight
结构
网格上一个顶点的蒙皮骨骼权值
每个被蒙皮的点至多有四个骨头。所有权值的和应该为1。权值和骨骼索引应该被以权值递
减的顺序定义。如果一个顶点被少于四个骨骼影响,剩下的权值应该为0。
参见:Mesh.boneWeights 变量。
变量
◆ var boneIndex0 : int
描述:第一个骨骼的索引。
参见:weight0 .
◆ var boneIndex1 : int
描述:第二个骨骼的索引。
参见:weight1.
◆ var boneIndex2 : int
描述:第三个骨骼的索引。
参见:weight2 .
◆ var boneIndex3 : int
描述:第四个骨骼的索引。
参见:weight3 .
◆ var weight0 : float
描述:第一个骨骼的蒙皮权值。
参见:boneIndex0.
◆ var weight1 : float
描述:第二个骨骼的蒙皮权值。
参见:boneIndex1.
◆ var weight2 : float
描述:第三个骨骼的蒙皮权值。
参见:boneIndex2.
◆ var weight3 : float
描述:第四个骨骼的蒙皮权值。
参见:boneIndex3.
Bounds
结构
代表一个轴对齐包围盒。
一个轴对齐包围盒,简称为AABB,是与坐标轴对齐的box 并且完全包围一些物体。因为这
个box 不会绕着轴旋转,所以它可以只用center 和extents 定义,或者用min 和max 点定义。
Bounds 被Collider.bounds,Mesh.bounds,Renderer.bounds 使用。
变量
◆var center : Vector3
描述:包围盒子的中心
◆var extents : Vector3
描述:box 的宽度。这个总是size 的一半
◆var max : Vector3
描述:box 的最大点。这个总是等于center + extents。
◆var min : Vector3
描述:box 的最小点。这个总是等于center - extents。
◆var size : Vector3
描述:box 的总大小。这个总是extents 的二倍。
size.x 是宽度, size.y 是高度, size.z 是长度。
构造函数
◆static function Bounds ( center : Vector3 , size : Vector3 ) : Bounds
描述:用给定的center 和总size 创建新的Bounds。Bounds extents 将是给定size 的一半。
var bounds = Bounds ( Vector3.zero , Vector3(1,2,1));//在原点常见柱状包围盒
函数
◆function Contains ( point : Vector3 ) : bool
描述:point 包含在这个包围盒中吗?
◆function Encapsulate ( point : Vector3 ) : void
描述:增大Bounds 以包含这个point.
◆function Encapsulate ( bounds : Bounds ) : void
描述:增大bounds 来封装另一个bounds。
◆function Expand ( amount : float ) : void
描述:沿着每个面按照amount 增加它的size 来扩展这个bounds。
◆function Expand ( amount : Vector3 ) : void
描述:沿着每个面按照amount 增加它的size 来扩展这个bounds。
◆function IntersectRay ( ray : Ray ) : bool
描述:ray 与这个包围盒相交吗?
◆function IntersectRay ( ray : Ray , out distance : float ) : bool
描述:ray 与这个包围盒相交吗?
当IntersectRay 返回真,distance 将是到射线源点的距离。
◆function SetMinMax ( min : Vector3, max : Vector3 ) : void
描述:设定边界为盒子的min 和max 值。
使用这个函数要比分别指定min 和max 更快。
◆function SqrDistance ( point : Vector3 ) : float
描述: 点到这个包围盒的最小平方距离。
◆function ToString ( ) : string
描述:返回一个格式化好的字符串
collision

描述碰撞
Collision 信息被传递到Collider . OnCollisionEnter , Collider . OnCollisionStay 和
Collider.OnCollisionExit 事件。参见: ContactPoint.
变量
◆var collider : Collider
描述:碰撞到的Collider ( 只读).
为了得到所有被碰撞到的碰撞器的细节,你需要迭代接触点( contacts 属性)。
◆var contacts : ContactPoint [ ]
描述:接触点由物理引擎产生。
每个contact 包含一个接触点,法线和两个发生碰撞的碰撞器(参考ContactPoint)。在
OnCollisionStay 或者OnCollisionEnter 内可以确保contacts 有至少一个元素。
function OnCollisionStay ( collision : Collision ){
//检查碰到碰撞器是否有刚体
//然后使用一个力
for ( var contact : ContactPoint in collision . contacts ) {
print ( contact.thisCollider . name + "hit" + contact . otherCollider .name );
//可视化接触点
Debug.DrawRay ( contact . point , contact . normal, Color .white ) ;
}
}
//一枚手榴弹,在击中一个表面时初始化一个爆炸预设,然后销毁它
var explosionPrefab : Transform;
function OnCollisionEnter( collision : Collision ){
//旋转这个物体使y 轴面沿着表面法线的方向
var contact = collision . contact [ 0 ];
var rot = Quaternion . FromToRotation ( Vector3.up , contact . normal ) ;
var pos = contact . point ;
Instantiate ( explosionPrefab , pos , rot ) ;
Destory ( gameObject );//销毁这个投射物
}
◆var gameObject : GameObject
描述:/ gameObject / 是与之碰撞的物体(只读)
◆var relativeVelocity : Vector3
描述: 两个碰撞物体的相对线形速度(只读)。
//当以较大的速度碰到一个物体时播放声音
function OnCllisionEnter ( collision : Collision ) {
if ( collision . relativeVelocity . magnitude > 2 )
audio .Play ( );
}
◆var rigibody : Rigidbody
描述:碰撞到的Rigidbody(只读),如果碰到的物体是一个没有附加刚体的碰撞器,返回
null
//让所有碰到的刚体向上飞
function OnCollisionStay ( collision : Collision ) {
//检查碰到的碰撞器是否有一个刚体,然后使用力
if ( collision . rigidbody ){
collision . rigidbody .AddForce ( Vector3 . up * 15 ) ;
}
}
◆var transform : Transform
描述:碰撞到的物体的Transform(只读)。
如果碰到一个带有Rigidbody 的碰撞器,transform 将是所有附加刚体的变换。如果碰到了一
个没有刚体的碰撞器,transform 将是所有附加碰撞器的变换。
color
结构
表示RGBA 颜色。
这个结构被用在整个Unity 中传递颜色。每个颜色组件是一个0 到1 之间的浮点数。
组件(r ,g ,b )在RGB 颜色空间内定义一个颜色。Alpha 组件(a)透明性- alpha 为0 是完全
不透明,alpha 为1 是完全透明。
变量
◆var a : float
描述:颜色的Alpha 组件。
var color = Color . white ;
color . a = 0 ;
◆var b : float
描述:颜色的蓝色组件。
var color = Color .white;
color .b = 0 ;
◆var g : float
描述:颜色的绿色组件
var color = Color . white ;
color . g = 0 ;
◆var grayscale : float
描述:颜色的灰度值(只读)
var color = Color ( 3 , 4 ,6 ) ;
print ( color . grayscale ) ;
◆var r : float
描述:颜色的红色组件。
var color = Color . white ;
color . r = 0
◆var this [ index : int ] : float
描述:分别使用[ 0 ] ,[ 1 ] ,[ 2 ] ,[ 3 ]访问r ,g , b ,a 组件。
Color p ;
p [ 1 ] = 5 ;//与p .g = 5 相同
构造函数
◆static function Color ( r : float , g : float , b : float, a: float ) : Color
描述:用给定的r , g , b , a ,组件构建一个新的颜色。
var color = Color ( 0.2 , 0.3 , 0.4 , 0.5 ) ;
◆static function Color ( r : float , g : float , b : float ) : Color
描述:用给定的r , g , b 组件构建一个新的颜色并设置a 为1
var color = Color (0.2 , 0.3 , 0.4 ) ;
函数
◆function ToString ( ):string
描述:返回格式化好的这个颜色的字符串。
print ( Color .white ) ;
类变量
◆static var black : Color
描述:黑色。RGBA 为( 0 , 0 , 0 , 1 ).
◆static var blue : Color
描述:蓝色。RGBA 为( 0 , 0 , 1 , 1 ).
◆static var clear : Color
描述:完全透明。RGBA 为( 0 ,0, 0, 0 ).
◆static var eyan : Color
描述:青色。RGBA 为( 0 , 1 , 1 , 1 ).
◆static var gray : Color
描述:灰色。RGBA 为( 5 , 5 , 5 , 1 ).
◆static var green : Color
描述:绿色。RGBA 为(0, 1 , 0, 1 ).
◆static var grey : Color
描述:英式拼法为gray。RGBA 为(0.5 , 0.5 , 0.5 , 1 ).
◆static var magenta : Color
描述:紫红色。RGBA 为(1 , 0 , 1 , 1 ).
◆static var red : Color
描述:全红。RGBA 为(1 , 0 , 0, 1 ).
◆static var white : Color
描述:全白。RGBA 为(1 , 1 , 1 , 1 ).
◆static var yellow : Color
描述:黄色。RGBA 是怪异的(1 , 235/255 , 4/255 , 1 ),但是这个颜色看起来非常好!
类方法
◆static function Lerp ( a : Color , b : Color , t : float ) : Color
描述:在颜色a 和颜色b 之间按照t 插值。
/ t /被限定到0 和1 之间,当t 为0 时返回a . 当t 为1 时返回b
◆static operator * ( a : Color , b : Color) : Color
描述:乘两个颜色,每个组件被分别乘。
◆static operator * ( a : Color , b : float) : Color
描述:用浮点数b 乘以颜色a。每个组件被分别乘。
◆static operator * ( a : float , b : Color) : Color
描述:用浮点数b 乘以颜色a。每个组件被分别乘。
◆static operator + ( a : Color , b : Color) : Color
描述:加两个颜色,每个组件被分别加。
◆static operator - ( a : Color , b : Color) : Color
描述:从颜色a 中减去颜色b。每个组件被分别减。
◆static operator / ( a : Color , b : float) : Color
描述:乘用浮点数b 除以a。每个组件被分别除。
◆static implicit function Color ( v : Vectro4 ) : Color
描述:Colors 可以被隐式转化为Vector4,或由它转化而来。
◆static implicit function Vector4 ( c : Color ) : Vector4
描述:Colors 以被隐式的转化为Vector4,或由它转化而来。
ContactPoint
结构
描述:碰撞发生的接触点。
接触点被存储在collision 结构中, 参见collision , collision . OnCollisionEnter,
Collision . OnCollisionStay , Collision . OnCollisionExit.
变量
◆var normal : Vector3
描述:接触点的法线
◆var otherCollider : Collider
描述:碰撞中的另一个碰撞器
◆var point : Vector3
描述:接触点
◆var thisCollider : Collider?
描述:碰撞中的第一个碰撞器
ControllerColliderHit

ControllerColliderHit 被CharacterController . OnControllerColliderHit 使用来给出详细的关于
碰撞和如何处理它们的信息。
变量
◆var collider : Collider
描述:被控制器碰到的碰撞器。
◆var controller : CharacterController
描述:碰到该碰撞器的控制器。
◆var gameObject : GameObject
描述:被控制器碰到的游戏物体。
◆var moveDirection : Vector3
描述:从胶囊的中心到接触点的大致方向。
这可以用来找到一个合理的方向将力应用到接触的刚体。
◆var moveLength : float
描述:角色碰到这个碰撞器时已经行走了多远。
注意这可能不同于你传递到CharacterController . Move 的。因为所有的移动都是被碰撞器制
约的。
◆var normal : Vector3
描述:在世界空间中碰撞表面的法线。
◆var point : Vector3
描述:世界空间中的碰撞点。
◆var rigidbody : Rigidbody
描述:被控制器碰到的刚体。
如果没有接触一个刚体而是一个静态碰撞器时为null。
◆var transform : Transform
描述:被控制器碰到的变换。
Debug

一个类,包含用于开发游戏时的调试方法。
类变量
◆static var isDebugBuild : bool
描述:在Build Settings....对话框中,有一个被称为"strip debug symbols"的复选框。
如果它被选择isDebugBuild 将为关。在编辑器中isDebugBuild 总是返回真,建议在发布游
戏的时候移除所有对Debug .Log 的调用,这样你就能够容易的发布带有调试输出的测试版,
而最终版没有调试输出。
//只有这是调试版时,记录调试信息
if ( Debug .isDebugBuild ) {
Debug . Log ( " Something bad happened ! " ) ;
}
类方法
◆static function Break ( ) : void
描述:暂停编辑器
Debug . Break ( ) ;
◆static function DrawLine ( start:Vector3, end: Vector3, color : Color = Color . white ) : void
描述:从point 开始到end 用颜色绘制一条线。
这个线将被绘制在编辑器的场景视图中。如果在游戏视图中启用了gizmo 绘制,这个线也
将被绘制在这里。
//从世界坐标的原点到点( 1 , 0 , 0 )绘制一条红色的线
function Update ( ) {
Debug . DrawLine ( Vector3 . Zero , new Vector3 ( 1 , 0 , 0 ), Color . red ) ;
}
◆static function DrawRay ( start:Vector3, dir : Vector3, color : Color = Color . white ) : void
描述:从start 到start+dir 用颜色绘制一条线。
//绘制一条10 米长的线从position,沿着变换的z 轴向前。
function Update ( ) {
var forward = transform . TransformDirection ( Vector3 . forward ) * 10 ;
Debug . DrawRay ( transform . position .Vector3 . forward * 10 , Color . green );
}
◆static function Log ( message : object ) : void
描述:记录message 到Unity 控制台。
Debug . Log ( "Hello");
◆static function Log ( message : object . context : Object ) : void
描述:记录message 到Unity 控制台。
当你在控制台中选择消息的时候一个到上下文物体的链接将被绘制。这是非常有用的。如果
你想知道那个物体发生了错误。
Debug . Log ( "Hello" , gameObject ) ;
◆static function LogError ( message : object ) : void
描述:Debug . Log 的一个变体,用来记录错误信息到控制台。
var memberVariable : Transform ;
if ( memberVariable == null )
Debug . LogError ( " memberVariable must be set to point to a Transform. ") ;
◆static function LogError ( message : object , context : Object ) : void
描述:Debug . Log 的一个变体,用来记录错误信息到控制台。
等你在控制台中选择消息的时候一个到上下文物体的链接将被绘制。这是非常有用的, 如
果你想知道那个发生了错误。
var memberVariable : Transform ;
if ( memberVariable == null )
Debug . LogError ( "memberVariable must be set to point to a Transform " , this ) ;
◆static function LogWarning ( message : object ) : void
描述:Debug . Log 的一个变体,用来记录警告信息到控制台。
◆static function LogWarning ( message : object , context : Object ) : void
描述:Debug . Log 的一个变体,用来记录警告信息到控制台。
当你选择控制台中的一个消息时,一个到上下文物体的连接将被绘制。这是非常有用
的, 如果你想知道那个物体发生了错误
Event

一个UnityGUI 事件。
对应于用户的输入事件(按键,鼠标事件),或者是UnityGUI 布局或渲染事件。
对于每个事件OnGUI 在脚本中被调用;因此OnGUI 在每帧中被潜在调用多次。
Event . current 对应于OnGUI 调用“当前”事件。
参见:GUIScripting Guide
变量
◆var alt : bool
描述:Alt/Option 键被按住?(只读)
在windows 下,如果Alt 键被按下返回真。在Mac 下,如果Option 键被按下返回真。
◆var button : int
描述:哪个鼠标键被按下
0 表示左键,1 表示右键。2 表示中键。在EventType . MouseDown ,EventType .MouseUp
事件中使用。
◆var capsLock : bool
描述:Caps Lock 处于打开状态?(只读)
如果Caps Lock 为打开返回真
◆var character : char
描述:输入的字符
在EventType . KeyDown 事件中使用,注意EventType . KeyUp 事件不包含字符,只包含
Event . keyCode .
参见:Event . keyCode.
◆var command : bool
描述:Command/Windows 键被按住?(只读)
在Windows 下,如果Windows 键被按下返回真。在Mac 下,如果Command 键被按下返回
真。
◆var control : bool
描述:Control 被按下?(只读)
如果Control 被按下返回真。
◆var delta : Vector2
描述:与上次事件相比,鼠标的相对移动。
在EventType .MouseMove,EventType .MouseDrag,,EventType .ScrollWheel 时间中使用。
参见:Event . mousePosition
◆var functionKey : bool
描述:当前按下的键是功能键?(只读)
如果当前按下的键是方向键,翻页键,退格键等等时返回真,如果这个键需要特殊处理才能
用与文本编辑时,functionKey 为打开。
◆var isKey : bool
描述:这个事件是键盘事件?(只读)
◆var isMouse : bool
描述:这个事件是鼠标事件?(只读)
◆var keyCode : KeyCode
描述:用于键盘事件的原始键代码
在EventType . KeyDown 和EventType . KeyUp 事件中使用;返回匹配物理键盘的KeyCode
值,使用这个来处理光标,功能键等等。
参见:Event . character 。
◆var mousePosition : Vector2
描述:鼠标位置
在EventType . MouseMove 和EventType . MouseDrag 事件中使用。
参见:Event . delta
◆var numeric : bool
描述:当前按下的数字的键?(只读)
使用这个表示区分主&数字键。
◆var shift : bool
描述:Shift 被按下?(只读)
如果Shift 被按下返回真。
函数
◆function GetTypeForControl ( controlID : int ) : EventType
参数
controlID 查询的控件ID 。从GUIUtilty . GetControlID ( ) 获取。参考
EventType 获取可能值的列表。
描述:为给定的控件ID 获取一个过滤的事件类型。
这个函数可以用来实现鼠标锁和键盘焦点。
◆function Use ( ) : void
描述:使用这个事件。
当已经使用了一个事件时调用这个方法。事件类型将被设置为EventType . Used。使其他
GUI 元素忽略它。
类变量
◆static var current : Event
描述:现在被处理的当前事件。
类方法
◆static function KeyboardEvent ( key : string ) : Event
描述:创建一个键盘事件。
这可用于检查某个键是否被按下。可能带有调整器。key 字符串是键的名称(与输入管理
器中的相同),可以使用任意数量的调整器前缀:& = Alternate , ^ = Controler, % = Command ,
# = Shift 例如:&f12 = Alternate +F12., " ^[ 0 ] " = Control +keypad0
function OnGUI ( ) {
GUILayout . Lable ( " Press Enter To Start Game ") ;
if ( Event . current . Equals ( Event . KeyboardEvent ("[enter]")))
Application . LoadLevel ( 1 )
if(Event current Equals(Event KeybordEvent("return") ))
Print( "I said enter ,not return – try the keypad" );
}
GL

底层图像库。
使用这个类操作激活的变换矩阵,发送与OpengGL 立即模式相同的渲染命令并做一些其他
的底层图像操作。注意,在所有情况下使用Graphics.DrawMesh 比任何使用立即模式绘制更
有效。
这个类只限于Unity Pro.
类变量
◆ static var LINES: int
描述:用于Begin 的模式:绘制直线。
参见:GL . Begin, GL . End.
◆ static var modelview:Matrix4x4
描述:当前模型视矩阵。
给这个变量赋值等同于OpenGL 中的glLoadMatrix(mat);在其他图形API 中对应的功能被模
拟。
改变模型视矩阵覆盖当前相机的视参数, 因此最常用的是使用GL.PushMatrix 和
GL.PopMatrix 来保存和恢复矩阵。
读取这个变量返回当前模型视矩阵。
◆ static var QUADS:int
描述:用于Begin 的模式:绘制四边形
参见:GL.Begin,GL.End.
◆ static var TRIANGLE_STRIP:int
描述:用于Begin 的模式:绘制三角面
参见:GL.Begin,GL.End.
◆ static var TRIANGLES:int
描述:用于Begin 的模式:绘制三角形
参见:GL.Begin,GL.End.
类方法
◆ static function Begin(mode:int) : void
参数
mode 绘制的几何体:可以是TRIANGLES,TRIANGLE_STRIP,QUADS 或
LINES.
描述:开始绘制3D 几何体
这个对应OpenGL 中的glBegin,在其他图形API 中相同的功能被模拟,在GL.Begin 和
GL.End 之间,可以调用GL .Veriex,GL.Color,GL.TexCoord 和其他立即模式绘制函数。
在绘制你自己的几何体时,你应该注意它们的裁剪。裁剪规则可能会因为不同的图形API
而不同。在大多数情况下在shader 中使用Cull Off 命令是安全的。
参见:GL.End.
◆ static function Clear(clearDepth:bool,clearColor:bool,backgroudColor):void
参数
clearDepth 应该清除深度缓存?
clearColor 应该清除颜色缓存?
backgroudColor 颜色被清理为什么,只有当clearColor 为true 时使用.
描述:清除当前渲染缓存
这将清除屏幕或激活的RenderTexture.
◆ static function Color(c : Color) : void
描述:设置当前顶点颜色
这个对应OpenGL 中的glColor4f(c. r,c.g,c.b,c.a):在其他图形中API 中相同的功能被模拟,
为了使逐顶点颜色可以在不同的硬件上工作,你需要使用绑定了颜色通道的shader。参考
BindChannels 文档.
这个函数只在GL.Begin 和GL.End 函数之间调用.
◆ static function End( ) : void
描述:结束绘制3D 几何体
这个对应OpenGL 中的glEnd;在其他图形API 中相同的功能被模拟.
参见:GL.Begin.
◆ static function LoadIdentity( ) : void
描述:加载单位矩阵到当前模型视矩阵。
这个函数覆盖当前相机的视参数,因此最常用的是使用GL.PushMatrix 和GL.PopMatrix
来保存和恢复矩阵。
◆ static function LoadOrtho( ) : void
描述:辅助函数用来设置一个正交透视变换
调用LoadOrtho 知道,视锥从(0,0,-1) 变化到(1,1,100).
◆ static function LoadPixelMatrix( ) : void
描述:设置一个用于像素修正渲染的矩阵。
这个设置模型视和投影矩阵,因此X,Y 坐标直接映射到像素。(0,0)位于当前相机
视口的左下角。Z 坐标从-1 到+100
这个函数覆盖当前相机的参数,因此最常用的是使用GL.PushMatrix 和GL.PopMatrix
来保存和恢复矩阵。
◆ static function LoadPixelMatrix(left:float,right:float,bottom:float,top:float):void
描述:设置一个矩阵的像素正确渲染。
这样设置投影矩阵点以便X、Y 坐标图直接像素化。(0,0)在底部左侧当前摄像机的视角。
Z 坐标是从-1 到+100。
这个函数覆盖了相机的参数,所以通常你要保存和恢复矩阵就使用GLPushMatrix 和
GL.PopMatrix。
◆ static function LoadProjectionMatrix (mat : Matrix4x4) : void
描述:加载到当前任意矩阵投影矩阵。
这个函数重写当前摄像机的投影参数, 所以通常你要保存和恢复投影矩阵就使用
GLPushMatrix 和GL.PopMatrix。
◆ static function MultiTexCoord (unit : int, v : Vector3) : void
描述:设置当前纹理坐标(v.x,v.y,v.z)实际的纹理单元。
在OpenGL 中glMultiTexCoord 为特定的纹理单元如果多纹理是可用的。在其他图形的API
中相同的功能进行了仿真。
这个函数只能被称为介于GL.Begin 和GL.End 功能之间。
◆ static function MultiTexCoord2 (unit : int, x : float, y : float) : void
描述:设置当前纹理坐标(x,y)的为实际纹理单元。
在OpenGL 中glMultiTexCoord 为特定的纹理单元如果多纹理是可用的。在其他图形的API
中相同的功能进行了仿真。
这个函数只能被称为介于GL.Begin 和GL.End 功能之间。
◆ static function MultiTexCoord3(unit : int, x : float, y : float, z : float) :void
描述:设置当前纹理坐标(x,y,z)的为实际纹理单元。
在OpenGL 中glMultiTexCoord 为特定的纹理单元如果多纹理是可用的。在其他图形的API
中相同的功能进行了仿真。
这个函数只能被称为介于GL.Begin 和GL.End 功能之间。
◆ static function MultMatrix (mat : Matrix4x4) : void
描述:复制当前的点矩阵和其中的一个说明。
相当于glMultMatrix(垫在)OpenGL; 在其他图形API 的相应功能是相仿的。
换点矩阵覆盖当前相机视图的参数, 所以通常你要保存和恢复投影矩阵就使用
GLPushMatrix 和GL.PopMatrix。
◆ static function PopMatrix () : void
描述:恢复了投影和点矩阵的矩阵堆栈的顶部。
换投影矩阵点覆盖当前相机视图的参数。这些矩阵可以用GLPushMatrix 和GL.PopMatrix 来
保存和恢复。
参见:PushMatrix 函数。
◆ static function PushMatrix () : void
描述:节约双方投影矩阵对点和矩阵堆栈。
换投影矩阵点覆盖当前相机视图的参数。这些矩阵可以用GLPushMatrix 和
GL.PopMatrix 来保存和恢复。
参见:PopMatrix 函数
◆ static function SetRevertBackfacing(revertBackFaces : bool) : void
描述:选择是否翻转隐面剔除,是(真)或者不是(假)
◆ static function TextCoord (v : Vector3) : void
描述:为所有纹理单元设置当前纹理坐标(v.x, v.y, v.z)
这个对应于OpengGL 中用于所有纹理单元的glMultiTexCoord 或者多纹理不可用时的
glTexCoord,在其他的图形API 中仿真了相同的功能。
这个函数只在GL.Begin 和GL.End 函数之间调用。
◆ static function TexCoord2(x : float, y : float) : void
描述:为所有纹理单元设置当前纹理坐标(x, y)
这个对应于OpengGL 中用于所有纹理单元的glMultiTexCoord 或者多纹理不可用时的
glTexCoord,在其他的图形API 中仿真了相同的功能。
, 这个函数只在GL.Begin 和GL.End 函数之间调用。
◆ static function TexCoord3(x : float, y : float, z : float) : void
描述:为所有纹理单元设置当前纹理坐标(x, y, z)
这个对应于OpengGL 中用于所有纹理单元的glMultiTexCoord 或者多纹理不可用时的
glTexCoord,在其他的图形API 中仿真了相同的功能。
这个函数只在GL.Begin 和GL.End 函数之间调用。
◆ static function Vertex(v : Vector3) : void
描述:提交顶点
这个对应OpenGL 中的glVertex3f(v.x, v.y.v.z); 在其他图形API 中相同的功能被模拟。
这个函数只在GL.Begin 和GL.End 函数之间调用。
◆ static function Vertex3(x : float, y : float, z : float) : void
描述:提交顶点
这个对应OpenGL 中的glVertex3f(x, y, z); 在其他图形API 中相同的功能被模拟。
这个函数只在GL.Begin 和GL.End 函数之间调用。
◆ static function Viewport(pixelRect : Rect) : void
描述:设置渲染视口
所有的渲染都被限制在pixelRect 之内。
GUIContent

GUI 元素的内容
这个与GUIStyle 紧密相关,GUIContent 定义渲染什么而GUIStyle 定义如何渲染。
参见:GUIStyle
变量
◆ var image : Texture
描述:包含图标的图像
◆ var text : string
描述:包含的文本
◆ var tooltip : string
描述:这个元素的提示
与这个内容相关的提示。读取GUItooltip 来获取当前用户指向的GUI 元素的提示。
构造函数
◆ static function GUIContent() : GUIContent
描述:用于所有形状和尺寸的GUIContent 的构造函数
构建一个空的GUIContent。
◆ static function GUIContent(text : string) : GUIContent
描述:构建一个只包含文本的GUIContent 物体。
使用GUI 是,你不需要为一个简单的文本字符创建GUIContents – 这两行代码功能等效:
function OnGUI()
{
GUI.Button(Rect(0, 0, 100, 20), “Click Me”);
GUI.Button(Rect(0, 30, 100, 20), GUIContent(“Click Me”));
}
◆ static function GUIContent(image : Texture) : GUIContent
描述:构建一个只包含图片的GUIContent 对象。
var icon : Texture;
function OnGUI()
{
GUI.Button(Rect(0, 0, 100, 20), GUIContent(icon));
}
◆ static function GUIContent(text : string, image : Texture) : GUIContent
描述:构建一个包含text 和图片的GUIContent 对象
var icon : Texture;
function OnGUI()
{
GUI.Button(Rect(0, 0, 100, 20), GUIContent(“Click me”, icon));
}
◆ static function GUIContent(text : string, tooltip : string) : GUIContent
描述:构建一个包含text 的GUIContent,当用户鼠标悬停在它上面的时候,全局GUI.tooltip
被设置为tooltip。
function OnGUI()
{
GUI.Button(Rect(0, 0, 100, 20), GUIContent(“Click me”, “This is a tooltip.”));
//如果用户指向这个按钮,全局提示被设置
GUI.Label(Rect(0, 40, 100, 40), GUI.tooltip);
}
◆ static function GUIContent(image : Texture, tooltip : string) : GUIContent
描述:构建一个包含图片的GUIContent,当用户鼠标悬停在它上面的时候,全局GUItooltip
被设置为tooltip。
◆ static function GUIContent(text : string, image : Texture, tooltip : string) : GUIContent
描述:构建一个包含text 和image 的GUIContent,,当用户鼠标悬停在它上面的时候,全局
GUItooltip 被设置为tooltip。
◆ static function GUIContent(src : GUIContent) : GUIContent
描述:从另一个GUIContent 构建一个GUIContent。
GUILayoutOption

内部类用来传递布局选项给GUILayout 函数,不要直接使用这些,而是在GUILayout 类的
布局函数中构造它们。
参见:
GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth,
GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth,
GUILayout.ExpandHeight
GUILayoutUtility

用于实现并扩展GUILayout 类的工具函数。
使用这个类制作你自己的GUI 布局代码
类方法
◆ static function BeginGroup(GroupName : string) : void
◆ static function BeginLayoutGroup(style : GUIStyle, options : GUILayoutOption[],
LayoutType : System.Type) : GUILayoutGroup
描述:普通的辅助函数– 当创建一个布局组的时候使用这个。它将确保所有的事情都正确
的排列。
style : 组选项的风格
option : 使用的布局选项
LayoutType : 创建的布局组的类型
◆ static function EndGroup(groupName : string) : void
◆ static function GetAspectRect(aspect : float) : Rect
◆ static function GetAspectRect(aspect : floar, style : GUIStyle) : Rect
◆ static function GetAspectRect(aspect : float, params options : GUILayoutOption[]) : Rect
◆ static function GetAspectRect(aspect : float, style : GUIStyle, params options :
GUILayoutOption[]) : Rect
参数
aspect 这个元素的宽高比(宽/高)
style 一个可选的风格。如果指定风格的padding 将被添加到返回举行的尺寸并且这个风格
的margin 将被用于间距。
options 一个可选的布局选项的列表,它用来指定额外的布局属性。任何在这里设置的值将
覆盖由Style 定义的设置。参见GUILayout.Width, GUILayout.Height, GUILayout.MinWidth,
GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight,
GUILayout.ExpandWidth, GUILayout.ExpandHeight.
返回Rect – 控制的矩形
描述:用一个制定的宽高比获取一个矩形。
◆ static function GetRect(content : GUIContent, style : GUIStyle, params options :
GUILayoutOption[]) : Rect
参数
content 让出空间所显示的内容
style 用于布局的GUIStyle
options 一个可选的布局选项的列表。它用来指定额外的布局属性。任何在这里设置的值将
覆盖由style 定义的设置。参见:GUILayout.Width, GUILayout.Height, GUILayout.MinWidth,
GUILayout.MaxWidth, GUILayout.MinHeight, GUILAyout.MaxHeight,
GUILayout.ExpandWidth, GUILayout.ExpandHeight
返回Rect – 一个足够大的矩形区域用来包含用/style/渲染时的/content/。
描述:获取一个以特定风格显示内容的矩形。
◆ static function GetRect(width : float, height : float) : Rect
◆ static function GetRect(width : float, height : float, params options : GUILayoutOption[]) :
Rect
◆ static function GetRect(width : float, height : float, style : GUIStyle, params options :
GUILayoutOption[]) : Rect
参数
width 你想要的区域的宽度
height 你想要的区域的高度
style 用了布局的可选GUIStyle,如果指定,风格的padding 将被添加到尺寸并且它的margin
将被用于间距
options 一个可选的布局选项的列表,它用来指定额外的布局属性。任何在这里设置的值将
覆盖由style 定义的设置。
参见:GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth,
GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth,
GUILayout.ExpandHeight.
返回Rect – 用于放置控件的矩形
描述:用一个固定的内容区域获取一个矩形
◆ static function GetRect(minWidth : float, maxWidth : float, minHeight : float, maxHeight :
float) : Rect
◆ static function GetRect(minWidth : float, maxWidth : float, minHeight : float, maxHeight :
float, style : GUIStyle) : Rect
◆ static function GetRect(minWidth : float, maxWidth : float, minHeight : float, maxHeight :
float, params options : GUILayerOption[]) : Rect
◆ static function GetRect(minWidth : float, maxWidth : float, minHeight : float, maxHeight :
float, style : GUIStyle, paramas option : GUILayoutOption[]) : Rect
参数
minWidth 传回区域的最小宽度
maxWidth 传回区域的最大宽度
minHeight 传回区域的最小高度
maxHeight 传回区域的最大宽度
style 一个可选的风格。如果指定,风格的padding 将被添加到尺寸并且它的margin 将被用
于间距
options 一个可选的布局选项的列表。它用来指定额外的布局属性。任何在这里设置的值将
覆盖由style 定义的设置。
参见:GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth,
GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth,
GUILayout.ExpandHeight.
返回Rect – 一个矩形区域在两个轴上的尺寸介于minWidth 和maxWidth 之间
描述:从布局系统获取一个可扩展的矩形,矩形的尺寸将在min 和max 值之间。
GUILayout

GUILayout 是用于UnityGUI 自动布局的类。
参见:GUI Layout tutoria
类方法
◆ static function BeginArea(screenRect : Rect) : void
◆ static function BeginArea(screenRect : rect, text : string) : void
◆ static function BeginArea(screenRect : Rect, image : Texture) : void
◆ static function BeginArea(screenRect : Rect, content : GUIContent) : void
◆ static function BeginArea(screenRect : Rect, style : GUIStyle) : void
◆ static function BeginArea(screenRect : Rect, text : string, style : GUIStyle) : void
◆ static function BeginArea(screenRect : Rect, image : Texture, style : GUIStyle) : void
◆ static function BeginArea(screenRect : Rect, content : GUIContent, style : GUIStyle) : void
参数
text 可选的显示在该区域中的文本
image 可选的显示在该区域中的纹理
content 可选的在该区域顶部显示的文本,图片和提示
style 使用的风格。如果留空,空的GUIStyle(GUIStyle.none)将被使用,给出一个透明的背
景。参见:EndArea
描述:在屏幕的固定区域开始一个GUI 空间的GUILayout 块。
默认的,任何使用GUILayout 制作的GUI 空间都放置在屏幕的左上角。如果你想在任一区
域放置一系列自动布局的控件,使用GUILayout.BeginArea 定义一个新的区域以便自动布局
系统可以使用它。
function OnGUI()
{
GUILayout.BeginArea(Rect(200, 200, 100, 100));
GUILayout.Button(“Click me”);
GUILayout.Button(“Or me”);
GUILayout.EndArea();
}
在混合GUILayout 代码是这个函数是非常有用的。必须与EndArea 调用匹配。BeginArea /
EndArea 不能嵌套。
◆ static function BeginHorizontal(params options : GUILayoutOption[]): void
◆ static function BeginHorizontal(style : GUIStyle, params options : GUILayoutOption[]): void
参数
style 这个风格用于背景图片和填充值。如果留空,背景是透明的。
options 一个可选的布局选项的列表。它用来指定额外的布局属性。任何在这个设置的值将
覆盖由style 定义的设置。
参见: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth,
GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth,
GUILayout.ExpandHeight
描述:开始一个水平控件组。
所有在这个元素内部渲染的空间将被一个接一个的水平放置,改组必须调用EndHorizontal
关闭。
◆ static function BeginScrollView(scrollPosition : Vector2, params options :
GUILayoutOption[]) : Vector2
◆ static function BeginScrollView(scrollPosition : Vector2, horizontalScrollbar : GUIStyle,
verticalScrollbar : GUIStyle, params options : GUILayoutOption[]) : Vector2
◆ static function BeginScrollView(scrollPosition : Vector2, alwaysShowHorizontal : bool,
alwaysShowVertical : bool, params options : GUILayoutOption[]) : Vector2
◆ static function BeginScrollView(scrollPosition : Vector2, style : GUIStyle) : Vector2
◆ static function BeginScrollView(scrollPosition : Vector2, alwaysShowHorizontal : bool,
alwaysShowVertical : bool, horizontalScrollbar : GUIStyle, verticalScrollbar : GUIStyle, params
options : GUILayoutOption[]) : Vector2
◆ static function BeginScrollView(scrollPosition : Vector2, alwaysShowHorizontal : bool,
alwaysShowVertical : bool, horizontalScrollbar : GUIStyle, verticalScrollbar : GUIStyle,
background : GUIStyle, params options : GUILayoutOption[]) : Vector2
参数:
scrollPostion 用来显示的位置
alwaysShowHorizontal 可选的参数用来总是显示水平滚动条。如果为假或者留空,它将只
在ScrollView 中的内容比滚动视宽时显示。
alwaysShowVertical 可选的参数用来总是显示垂直滚动条。如果为假或者留空,它将只在
ScrollView 中的内容比滚动视高时显示。
horizontalScrollbar 用于水平滚动条的可选GUIStyle。如果不设置,将使用当前GUISkin 的
horizontalScrollbar。
verticalScrollbar 用于垂直滚动条的可选GUIStyle。如果不设置,将使用当前GUISken 的
verticalScrollbar 风格。
返回Vector2 – 修改过的scrollPosition。回传这个变量,如下的例子:
描述:开始一个自动布局滚动视。
自动布局滚动视,将使用任何你放置在它们中的内容并正常显示出来。如果他不适合,将显
示滚动条,BeginScrollView 的调用总是与EndScrollView 的调用匹配。
//这个变量对于空间来说就是这个滚动视查看子元素的位置。
var scrollPosition : Vector2;
//显示在滚动视中的字符串,下面两个按钮添加,清除这个字符串。
var longString = “This is a long-ish string”;
function OnGUI()
{
//开始一个滚动视,所有矩形被自动计算。
//它将使用任何可用的空间并确保内容排列正确
//这是小的最后两参数来强制滚动条出现
scrollPosition = GUILayout.BeginScrollView(scrollPosition, GUILayout.Width(100),
GUILayout.Height(100));
//添加一个简单的标签到滚动视内部。注意
//滚动条如何与文字换行正确的工作。
GUILayout.Height(longString);
//添加一个按钮来消除字符串。这个是在滚动区域内部,因此它
//也将被滚动。注意按钮如何变窄为垂直滚动条留出空间
if(GUILayout.Button(“Clear”)
longString = “”;
//结束我们上面开始的滚动条
GUILayout.EndScrollView();
//现在我们在滚动视外边添加一个按钮– 这将显示在滚动区域的下边
if(GUILayout.Button(“Add MoreText”))
{
longString += “\nHere is another line.”;
}
◆ static function Box(params option : GUILayoutOption[]) : void
◆ static function Box(style : GUIStyle, params option : GUILayoutOption[]) : void
参数
style 这个风格将用于背景图片和填充值,如果留空,背景是透明的。
options 一个可选的布局选项的列表。它用来指定额外的布局属性。任何在这里设置的值将
覆盖由style 定义的设置。
参见:GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth,
GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth,
GUILayout.ExpandHeight.
描述:开始一个垂直控件组。
所有在这个元素内部渲染的空间将被一个接一个地垂直放置。改组必须调用EndVertical 关
闭。
◆ static function Box(image : Texture, params option : GUILayoutOption[]) : void
◆ static function Box(text : string, params option : GUILayoutOption[]) : void
◆ static function Box(contend : GUIContent, params option : GUILayoutOption[]) : void
◆ static function Box(image : Texture, style : GUIStyle, params option : GUILayoutOption[]) :
void
◆ static function Box(text : string, style : GUIStyle, params option : GUILayoutOption[]) : void
◆ static function Box(contend : GUIContent, style : GUIStyle, params option :
GUILayoutOption[]) : void
参数
text 显示在该box 上的文本
image 显示在该box 上的Texture
content 用于这个box 的文本,图形和提示
style 使用的风格。如果不设置,将使用当前的GUISkin 的box 风格。
options 一个可选的布局选项的列表。它用来指定额外的布局属性。任何在这里设置的值将
覆盖由style 定义的设置。
参见:GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth,
GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth,
GUILayout.ExpandHeight.
描述:制作一个自动布局box
这将制作一个实心box,如果你想制作一个包含一些内容的box,使用一个子组函数的
风格参数(BeginHorizontal, BeginVertical, 等等)
◆ static function Button(image : Texture, params options : GUILayoutOption[]) : bool
◆ static function Button(text : string, params options : GUILayoutOption[]) : bool
◆ static function Button(content : GUIContent, params options : GUILayoutOption[]) : bool
◆ static function Button(image : Texture, style : GUIStyle, params options : GUILayoutOption[]) :
bool
◆ static function Button(text : string, style : GUIStyle, params options : GUILayoutOption[]) :
bool
◆ static function Button(content : GUIContent, style : GUIStyle, params options :
GUILayoutOption[]) : bool
参数
text 显示在该按钮上的文本
image 显示在该按钮上的Texture
content 用于这个按钮的文本,图形和提示。
style 使用的风格。如果不设置,将使用当前的GUISkin 的button 风格。
options 一个可选的布局选项的列表。它用来指定额外的布局属性。任何在这里设置的值将
覆盖由style 定义的设置。
参见:GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth,
GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth,
GUILayout.ExpandHeight
返回bool – true 当用户单击按钮时。
描述:制作一个简单的按钮,用户点击它们的时候就会有事情发生。
◆ static functioin EndArea() : void
描述:关闭由BeginArea 开始的GUILayout 块
◆ static function EndHorizontal() : void
描述:关闭一个开始于BeginHorizontal 的组
◆ static functioin EndScrollView() : void
描述:结束由BeginScrollView 调用开始的滚动视。
◆ static functioin EndVertical() : void
描述:关闭一个开始于BeginVertical 的组
◆ static functioin ExpandHeight(expand : bool) : GUILayoutOption
描述:传递给一个空间的选项来允许或不允许垂直扩展。
◆ static functioin ExpandWidth(expand : bool) : GUILayoutOption
描述:传递给一个空间的选项来允许或不允许水平扩展。
◆ static functioin FlexibleSpace() : void
描述:插入一个灵活的空格元素
灵活的空格用来填充一个布局中任何遗漏的空间。
◆ static functioin Height(height : float) : GUILayoutOption
描述:传递给空间的选项以便给它一个绝对高度。
◆ static functioin HorizontalScrollbar(value : float, size : float, leftValue : float, rightValue : float,
params options : GUILayoutOption[]) : float
◆ static functioin HorizontalScrollbar(value : float, size : float, leftValue : float, rightValue : float,
style : GUIStyle, params options : GUILayoutOption[]) : float
参数
value 在min 和max 之间的位置
size 能看见多大?
leftValue 滚动条左端的值
rightValue 滚动条右端的值
style 用于滚动条背景的风格。如果不设置,将使用当前GUISkin 的horizontalScrollbar
options 一个可选的布局选项的列表。它用来指定额外的布局属性。任何在这里设置的值将
覆盖由style 定义的设置。
参见:GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth,
GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth,
GUILayout.ExpandHeight
返回floar – 修改后的值。这可以通过拖动这个滚动条,或者单击两端的箭头来改变。
描述:一个水平滚动条。滚动条可以用来滚动文档。大多数情况下,你会使用滚动视代替。
找到额外的元素:
在滚动条两端的按钮将在当前皮肤中搜索“leftButton”和“rightButton”作为风格,滚动条的滑
块(你拖动的东西)将搜索并使用名为“thumb”的风格。
//这将使用下面的风格名来决定该按钮的尺寸/位置
//MyScrollbarleftButton - 用于左侧按钮的风格位置
//MyScrollbarrightButton - 用于右侧按钮的风格位置
//MyScrollbarthumb - 用于滑块的风格名称
scrollPos = GUILayout.HorizontalScrollbar(scrollPos, 1, 0, 100, “MyScrollbar”);
◆ static functioin HorizontalSlider(value : float, leftValue : float, rightValue : float, params
options : GUILayoutOption[]) : float
◆ static functioin HorizontalSlider(value : float, leftValue : float, rightValue : float, slider :
GUIStyle, thumb : GUIStyle, params options : GUILayoutOption[]) : float
参数
value 滑块显示的值。这个决定可拖动滑块的位置。
leftValue 滑杆左端的值。
rightValue 滑杆右边的值。
slider 用于显示拖动区域的GUIStyle。如果不设置,将使用当前GUISkin 的horizontalSlider。
thumb 用于显示拖动块的GUISkin 。如果不设置, 将使用当前的GUISkin 的
horizontalSliderThumb
options 一个可选的布局选项的列表。它用来指定额外的布局属性。任何在这里设置的值将
覆盖由style 定义的设置。
参见:GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth,
GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth,
GUILayout.ExpandHeight.
返回float – 被用户设置的值。
描述:一个用户可以拖动的滑杆。可以在min 和max 之间取一个值。
◆ static function Label(image : Texture, params options : GUILayoutOption[]) : void
◆ static function Label(text : string, params options : GUILayoutOption[]) : void
◆ static function Label(content : GUIContent, params options : GUILayoutOption[]) : void
◆ static function Label(image : Texture, style : GUIStyle, params options : GUILayoutOption[]) :
void
◆ static function Label(text : string, style : GUIStyle, params options : GUILayoutOption[]) :
void
◆ static function Label(content: GUIContent, style : GUIStyle, params options :
GUILayoutOption[]) : void
参数
text 显示在该标签上的文本。
image 显示在标签上的Texture。
content 用于这个标签的文本,图形和提示。
style 使用的风格。如果不设置。将使用当前GUISkin 的label。
options 一个可选的布局选项的列表。它用来指定额外的布局属性。任何在这里设置的值将
覆盖由style 定义的设置。
参见:GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth,
GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth,
GUILayout.ExpandHeight.
描述:制作一个自动布局label
标签没有用户交互。不会获取鼠标点击并总是以普通风格渲染。如果你想制作一个可视化
响应用户输出的控件,使用一个Box 控件。
◆ static function MaxHeight(maxHeight : float) : GUILayoutOption
描述:传递给控件的选项来指定一个最大高度。
◆ static function MaxWidth(maxWidth : float) : GUILayoutOption
描述:传递给控件的选项来指定一个最大宽度。
◆ static function MinHeight(minHeight : float) : GUILayoutOption
描述:传递给控件的选项来指定一个最小高度。
◆ static function MinWidth(minWidth : float) : GUILayoutOption
描述:传递给控件的选项,来指定一个最小宽度
◆ static function PasswordField(password : string, maskChar : char, params options :
GUILayoutOption[]) : string
◆ static function PasswordField(password : string, maskChar : char, maxLength : int, params
options : GUILayoutOption[]) : string
◆ static function PasswordField(password : string, maskChar : char, style : GUIStyle, params
options : GUILayoutOption[]) : string
◆ static function PasswordField(password : string, maskChar : char, maxLength : int, style :
GUIStyle, params options : GUILayoutOption[]) : string
参数
password 用于编辑的密码。这个函数返回值应该被赋回这个字符串。如下的例子。
maskChar 用来隐藏密码的字符。
maxLength 字符串的最大长度。如果不设置,用户可以一直输入。
style 使用的风格。如果不设置,将使用当前GUISkin 的textField 风格。
返回string – 编辑过的密码。
描述:制作一个用户可以输入密码的文本域。
var passwordToEdit = “My Password”;
function OnGUI()
{// 制作一个密码与来调整stringToEdit。
passwordToEdit = GUILayout.PasswordField(passwordToEdit, “*”, 25);
}
◆ static function RepeatButton(image : Texture, params options : GUILayoutOption[]) : bool
◆ static function RepeatButton(text : string, params options : GUILayoutOption[]) : bool
◆ static function RepeatButton(content : GUIContent, params options : GUILayoutOption[]) :
bool
◆ static function RepeatButton(image : Texture, style : GUIStyle, params options :
GUILayoutOption[]) : bool
◆ static function RepeatButton(text : string, style : GUIStyle, params options :
GUILayoutOption[]) : bool
◆ static function RepeatButton(content : GUIContent, style : GUIStyle, params options :
GUILayoutOption[]) : bool
参数
text 显示在该按钮上的文本。
image 显示在该按钮上的Texture。
content 用于这个按钮的文本,图形和提示。
style 使用的风格,如果不设置,将使用当前GUISkin 的button 风格。
options 一个可选的布局选项的列表。它用来指定额外的布局属性。任何在这里设置的值将
覆盖由style 定义的设置。
参见:GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth,
GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth,
GUILayout.ExpandHeight.
返回bool - /true/当用户按住按钮时
描述:制作一个重复按钮,只要用户按住鼠标这个按钮一直返回真。
◆ static function SeletionGrid(selected : int, texts : string[], xCount : int, params options :
GUILayoutOption[]) : int
◆ static function SeletionGrid(selected : int, images : Texture[], xCount : int, params options :
GUILayoutOption[]) : int
◆ static function SeletionGrid(selected : int, contents : GUIContent[], xCount : int, params
options : GUILayoutOption[]) : int
◆ static function SeletionGrid(selected : int, texts : string[], xCount : int, style : GUIStyle, params
options : GUILayoutOption[]) : int
◆ static function SeletionGrid(selected : int, images : Texture[], xCount : int, style : GUIStyle,
params options : GUILayoutOption[]) : int
◆ static function SeletionGrid(selected : int, contents : GUIContent[], xCount : int, style :
GUIStyle, params options : GUILayoutOption[]) : int
参数
selected 选择按钮的索引
texts 显示在按钮的字符串数组。
images 在按钮上纹理数组
contents 用于按钮的文本,图形和提示。
xCount 在水平方向多少个元素,元素将被缩放来适应,除非风格定义了一个fixedWidth,
空间高度将由元素的数量决定。
style 使用的风格。如果不设置,将使用当前GUISkin 的button 风格。
options 一个可选的布局选项的列表,它用来指定额外的布局属性。任何在这里设置的值将
覆盖由style 定义的设置。
参见:GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth,
GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth,
GUILayout.ExpandHeight.
返回int – 选择按钮的索引
描述:制作一个选择网格
◆ static function Space(pixel : float) : void
描述:在当前布局组中插入一个空格
空格的方向依赖与使用这个命令时当前所在布局组。如果在垂直组,空格是垂直的。
function OnGUI()
{
GUILayout.Button(“I’m the first button”);
//在两个按钮间插入20 像素
GUILayout.Space(20);
}
GUILayout.Button(“I’m a bit futher down”);
}
在水平组,pixels 将是水平的;
function OnGUI()
{
//开始水平组以便显示水平空格
GUILayout.BeginHorizontal(“box”);
GUILayout.Button(“I’m the first button”);
//在两个按钮间插入20 像素
GUILayout.Space(20);
GUILayout.Button(“I’m to the right”);
//结束上面开始的水平组
GUILayout.EndHorizontal();
}
◆ static function TextArea(text : string, params options : GUILayoutOption[]) : string
◆ static function TextArea(text : string, maxLength : int, params options : GUILayoutOption[]) :
string
◆ static function TextArea(text : string, style : GUIStyle, params options : GUILayoutOption[]) :
string
◆ static function TextArea(text : string, maxLength : int, style : GUIStyle, params options :
GUILayoutOption[]) : string
参数
text 用于编辑的文本。这个函数返回值应该被赋回这个字符串。如下的例子。
maxLength 字符串的最大长度。如果不设置,用户可以一直输入。
style 使用的风格。如果不设置,则使用当前GUISkin 的textField 风格。
options 一个可选的布局选项的列表。它用来指定额外的布局属性。任何在这里设置的值将
覆盖由style 定义的设置。
参见:GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth,
GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth,
GUILayout.ExpandHeight.
返回string – 编辑过的字符串。
描述:制作一个多行文本域。这里用户可以编辑这个字符串。
◆ static function TextField(text : string, params options : GUILayoutOption[]) : string
◆ static function TextField (text : string, maxLength : int, params options : GUILayoutOption[]) :
string
◆ static function TextField (text : string, style:GUIStyle, params options : GUILayoutOption[]) :
string
◆ static function TextField (text : string, maxLength : int, style : GUIStyle, params options :
GUILayoutOption[]) : string
参数
text 用于编辑的文本。这个函数返回值应该被赋回这个字符串,如下的例子。
maxLength 字符串的最大长度。如果不设置,用户可以一直输入。
style 使用的风格。如果不设置,将使用当前的GUISkin 的textArea
options 一个可选的布局选项的列表,它用来指定额外的布局属性。任何在这里设置的值将
覆盖由style 定义的设置。
参见:GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth,
GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth,
GUILayout.ExpandHeight.
返回string – 编辑过的字符串。
描述:制作一个单行文本域。这里用户可以编辑这个字符串。
var stringToEdit = “Hello, world”;
function OnGUI()
{
//制作一个文本域来调整stringToEdit
stringToEdit = GUILayout.TextField(stringToEdit, 25);
}
◆ static function Toogle(value : bool, image : Texture, params options : GUILayoutOption[]) :
bool
◆ static function Toogle(value : bool, text : string, params options : GUILayoutOption[]) : bool
◆ static function Toogle(value : bool, content : GUIContent, params options :
GUILayoutOption[]) : bool
◆ static function Toogle(value : bool, image : Texture, style : GUIStyle, params options :
GUILayoutOption[]) : bool
◆ static function Toogle(value : bool, text : string, style : GUIStyle, params options :
GUILayoutOption[]) : bool
◆ static function Toogle(value : bool, content : GUIContent, style : GUIStyle, params options :
GUILayoutOption[]) : bool
参数
value 按钮是打开或关闭
text 显示在该按钮上的文本
image 显示在该按钮上的Texture
content 用于这个按钮的文本,图形和提示
style 使用的风格。如果不设置,将使用当前GUISkin 的button 风格。
options 一个可选的布局选项的列表,它用来指定额外的布局属性。任何在这里设置的值将
覆盖由style 定义的设置。
参见:GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth,
GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth,
GUILayout.ExpandHeight.
返回bool – 按钮的新值
描述:制作一个on/off 开关按钮。
◆ static function Toolbar(selected: int, texts : string[], params options : GUILayoutOption[]) : int
◆ static function Toolbar(selected: int, images : Texture[], params options : GUILayoutOption[]) :
int
◆ static function Toolbar(selected: int, contents: GUIContent[], params options :
GUILayoutOption[]) : int
◆ static function Toolbar(selected: int, texts : string[], style : GUIStyle, params options :
GUILayoutOption[]) : int
◆ static function Toolbar(selected: int, image : Texture[],style : GUIStyle, params options :
GUILayoutOption[]) : int
◆ static function Toolbar(selected: int, content : GUIContent[],style : GUIStyle, params options :
GUILayoutOption[]) : int
参数
selected 选择按钮的索引
texts 显示在按钮上的字符串数组
images 在按钮上的纹理数组
contents 用于按钮的文本,图形和提示数组
style 使用的风格。如果不设置,将使用当前GUISkin 的button 风格。
options 一个可选的布局选项的列表。它用来指定额外的布局属性。任何在这里设置的值将
覆盖由style 定义的设置。
参见:GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth,
GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth,
GUILayout.ExpandHeight.
返回int – 选择按钮的索引
描述:制作一个工具栏
◆ static function VerticalScrollbar(value: float, size : float, topValue : float, buttomValue : float,
params options : GUILayoutOption[]) : float
◆ static function VerticalScrollbar(value: float, size : float, topValue : float, buttomValue : float,
style : GUIStyle, params options : GUILayoutOption[]) : float
参数
value 在min 和max 之间的位置
size 能看见多大?
topValue 滚动条顶端的值
bottomValue 滚动条底端的值
style 用于滚动条背景的风格。如果不设置,将使用当前GUISkin 的horizontalScrollbar。
options 一个可选的布局选项的列表。它用来指定额外的布局属性。任何在这里设置的值将
覆盖由style 定义的设置。
参见:GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth,
GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth,
GUILayout.ExpandHeight.
返回float – 修改后的值。这可以通过拖动这个滚动条,或者单击两端的箭头来改变。
描述:制作一个垂直滚动条。滚动条可以用来滚动文档。大多数情况下,你会使用scollView
代替。
找到额外的元素:
在滚动条两端的按钮将在当前皮肤中搜索“upbutton”和“downbutton”作为风格。滚动条的滑
块(你拖动的东西)将搜索并使用名为thumb 的风格。
//这将使用下面的风格名来决定该按钮的尺寸/位置
//MyVerticalScrollbarupbutton – 用于顶端按钮的风格名称
//MyVerticalScrollbardownbutton – 用于底端按钮的风格名称
//MyScrollbarthumb – 用于滑块的风格名称
scrollPos = GUILayout.HorizontalScrollbar(scrollPos, 1, 0, 100, “MyVerticalScrollbar”);
◆ static function VerticalSlider(value : floar, leftValue : float, rightValue : float, params options :
GUILayoutOption[]) : float
◆ static function VerticalSlider(value : floar, leftValue : float, rightValue : float, slider : GUIStyle,
thumb : GUIStyle, params options : GUILayoutOption[]) : float
参数
value 滑杆显示的值。这个决定可拖动滑块的位置。
topValue 滑杆顶端的值。
downValue 滑杆底端的值。
slider 用于显示拖动区域的GUIStyle。如果不设置,将使用当前GUISkin 的horizontalSlider。
thumb 用于显示拖动块的GUIStyle 。如果不设置, 将使用当前的GUISkin 的
horizontalSliderThumb。
options 一个可选的布局选项的列表,它用来指定额外的布局属性。任何在这里设置的值将
覆盖由style 定义的设置。
参见:GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth,
GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth,
GUILayout.ExpandHeight.
◆ static function Width(width : float) : GUILayoutOption
描述:传递给控件的选项以便给它一个绝对宽度
◆ static function Window(id : int, screenRect : Rect, func : GUIWindowFunction, text : string) :
Rect
◆ static function Window(id : int, screenRect : Rect, func : GUIWindowFunction, image :
Texture) : Rect
◆ static function Window(id : int, screenRect : Rect, func : GUIWindowFunction, content :
GUIContent) : Rect
◆ static function Window(id : int, screenRect : Rect, func : GUIWindowFunction, text : string,
style : GUIStyle) : Rect
◆ static function Window(id : int, screenRect : Rect, func : GUIWindowFunction, image :
Texture, style : GUIStyle) : Rect
◆ static function Window(id : int, screenRect : Rect, func : GUIWindowFunction, content :
GUIContent, style : GUIStyle) : Rect
参数
id 用于每个窗口唯一的ID。这是用于接口的ID。
clientRect 屏幕上用于窗口的矩形区域。布局系统将试图使窗体在他内部。如果不能,它将
调整矩形去适应它
func 在窗体内部创建GUI 的函数。这个函数必须使用一个函数– 当前创建GUI 的窗体id。
image 用于在标题栏上显示图片的Texture。
content 用于这个窗口的文本,图形和提示。
style 使用的风格。如果不设置,将使用当前GUISkin 的button 风格。
options 一个可选的布局选项的列表,它用来指定额外的布局属性。任何在这里设置的值将
覆盖由style 定义的设置。
参见:GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth,
GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth,
GUILayout.ExpandHeight.
返回Rect – 窗口位于举行位置。这个可能与你传入的一个具有不同位置和尺寸。
描述:制作一个弹出窗口。它的内容是自动布局的。
窗口浮动在普通GUI 控件之上。具有单击激活的特点并可以有选择的随意被用户拖动。不
像其他的控件,你需要传递给他们一个独立的功能并放置在窗口中这儿是一个小例子来帮助
你开始:
var windowRect = Rect(20, 20, 120, 50);
function OnGUI()
{
//注册窗口,注意第三个参数
windowRect = GUILayout.Window(0, windowsRect, DoMyWindow, “My Window”);
}
//制作窗口内容
function DoMyWindow(windowed : int)
{
//这个按钮将调整以适应物体
if(GUILayout.Button(“Hello World”))
print(“Get a click”);
}
你传入的客户区域只是作为一个参考,为了对窗口使用额外的限制。闯入一些额外的布局选
项。用在这里的一个将覆盖尺寸的计算。这是一个简单的例子。
var windowRect = Rect(20, 20, 120, 50);
function OnGUI()
{
//注册窗口,这里我们指示布局系统必须使窗体为100 像素宽。
windowRect = GUILayout.Window(0, windowRect, DoMyWindow, “My Window”,
GUILayout.width(100));
}
//制作窗体内容
function DoMyWindow(windowID : int)
{
//这个按钮大小不能适应这个窗体
//通常,这个窗体将被扩展以便适应这个按钮。但是由于GUILayout.Width 将只允//许窗体为
100 像素宽
if(GUILayout.Button(“Please click me a lot”))
print(“Get a click”);
}
GUISettings

用于GUI 如何表现的通用设置。
这些被所有在GUISkin 中的元素共享。
变量
◆ var cursorColor : Color
描述:文本域中光标的颜色。
◆ var cursorFlashSpeed : float
描述:文本域指示的闪动速度。
这个是闪动/秒。如果设置为0,闪动将被禁用。如果设置为-1,闪动速度将匹配系统的默
认速度。
◆ var doubleClickSelectsWord : bool
描述:文本域中双击是否选择单词。
◆ var selectionColor : Color
描述:文本域中选择矩形的颜色。
◆ var tripleClickSelectsLine : bool
描述:文本域中点击鼠标三次是否选择整行文本。
GUIStyleState

为GUIStyle 物体使用的给定状态的一个特定值。
GUIStyle 包含用于显示GUI 元素的所有值
变量
◆ var background : Texture2D
描述:在这个状态中被GUI 元素使用的背景图片。
◆ var textColor : Color
描述:在这个状态中被GUI 元素使用的文本颜色。
GUIStyle

GUI 元素的风格位置
这个类包含一个GUI 元素如何被渲染的所有信息。它包含用于字体,图标位置,背景图标,
和间距的信息。它不包含关于它包含什么的信息– 仅仅定义用这个风格渲染的文本如何被
显示。它不定义这个元素可以发生什么交互,但是定义了用于交互的显示设置。
一个GUIStyle 的设置。这是模仿一个CSS 样式。它包含下列事项的设置:
背景图片
这些被渲染在空间后面。不同的图像可以被指定为正常显示。当用户将鼠标放在元素上时
的显示,当使用者按下选择– 以及当元素被打开,如触发按钮,下面的这些都被称为风格
的状态。参见:normal, hover, active, onNormal, onHover, onActive – 这些包含每个状态的背
景图片,文本颜色属性。
文本渲染
这个风格都可以定义一个字体渲染,以及文本对齐,换行和剪裁的设置,它也定了该风格
元素不同状态的文本颜色参考: font, alignment, wordWrap, normal, hover, active, onHover,
onActive
图标位置
GUIStyle 可以渲染文本,图标或者两者兼而有之。GUIStyle 定义渲染时这两者间的相关位
置(这可以强制它只显示他们其中之一)。参见:imagePosition
尺寸和间距选项
GUIStyle 包含填充,边缘和边界。这些不严格地对应类似命名的CSS 属性。一个GUIStyle
可以选择的定义一个固定的宽度和高度。参见: margin, padding, border, fixedWidth,
fixedHieght
变量
◆ var active : GUIStyleState
描述:空间被按下时的渲染设置。
◆ var alignment : TextAnchor
描述:文本对齐
◆ var border : RectOffset
描述:所有背景图片的边界。
这个对应于GUITexture 的边界设置。它只影响渲染的背景图像,不影响定位。
◆ var clipOffset : Vector2
描述:用于该GUIStyle 内容的剪裁偏移。
◆ var clipping : TextClipping
描述:当渲染的内容相对于给定的区域太大时做什么
◆ var contentOffset : Vector2
描述:用于该GUIStyle 内容的像素偏移。
◆ var fixedHeight : float
描述:如果非0,任何用这个风格渲染的GUI 元素将有这里指定的高度。
◆ var fixedWidth : float
描述:如果非0,任何用这个风格渲染的GUI 元素将有这里指定的宽度。
◆ var focused : GUIStyleState
描述:元素获得键盘焦点时的渲染设置。
◆ var font : Font
描述:用于渲染的字体。如果null,当前的GUISkin 的默认字体将被使用。
◆ var hover : GUIStyleState
描述:鼠标悬停在控件时的渲染设置。
◆ var imagePosition : ImagePosition
描述:GUIContent 的图片和文本如何组合。
◆ var lineHeight : float
描述:这个风格一行文本的高度。以像素为单位。(只读)
◆ var margin : RectOffset
描述:以这种风格渲染的元素和任何其他GUI 元素之间的边界。
这个只影响自动布局。(参见: GUILayout)
◆ var name : string
描述:GUIStyle 的名称。用来基于名称获取它们。
◆ var normal : GUIStyleState
描述:组建正常显示是渲染设置。
◆ var onActive : GUIStyleState
描述:元素被打开并具有键盘焦点时的渲染设置。
◆ var onFocused : GUIStyleState
描述:元素被打开并被按下时的渲染设置。
◆ var onHover : GUIStyleState
描述:控件被打开并且鼠标悬停在它上面时的渲染设置
◆ var onNormal : GUIStyleState
描述:控件被打开时的渲染设置。
◆ var overflow : RectOffset
描述:添加到背景图片的额外间距。
这可用于如果你的图片要投射一个阴影,并且向扩展背景图片超出使用这个风格的制定
GUI 元素的矩形时。
◆ var padding : RectOffset
描述:从GUIStyle 边界到内容开始的间距
◆ var stretchHeight : bool
描述:这个风格的GUI 元素可以被垂直拉伸以便更好的布局么?
◆ var stretchWidth : bool
描述:这个风格的GUI 元素可以被水平拉伸以便更好的布局么?
◆ var wordWrap : bool
描述:文本换行?
这将导致任何包含的文本被换行以便适应控件的宽度。
构造函数
◆ static function GUIStyle() : GUIStyle
描述:
◆ static function GUIStyle(other:GUIStyle) : GUIStyle
描述:
函数
◆ function CalcHeight(content : GUIContent, width : float) : float
描述:当渲染content 并制定width 时这个元素的高度。
◆ function CalcMinMaxHeight (content : GUIContent, outminWidth : float, outmaxWidth :
float) : void
描述:计算以这个风格渲染的content 的最大最小宽度。
被GUILayout 使用来正确处理换行。
◆ function CalcScreenSize(contentSize : Vector2) : Vector2
描述:计算用这个风格格式化的元素的尺寸,和一个给定的内容空格。
◆ function CalcSize(content : GUIContent) : Vector2
描述:如果内容使用这个风格渲染,计算某些内容的尺寸。
这个函数不考虑换行。要做到这点,你需要确定宽度,然后打调用CalcHeight 分配计算出
wordwrapped 高度。
◆ function Draw(position : Rect, isHover: bool, isActive : bool, on : bool, hasKeyboardFocus :
bool) : void
描述:
◆ function Draw(position : Rect, text : string, isHover: bool, isActive : bool, on : bool,
hasKeyboardFocus : bool) : void
描述:用GUIStyle 绘制一个文本字符串。
◆ function Draw(position : Rect, image : Texture, isHover: bool, isActive : bool, on : bool,
hasKeyboardFocus : bool) : void
描述:用GUIStyle 绘制图片。如果图片太大,它将被缩小。
◆ function Draw(position : Rect, content : GUIContent, isHover: bool, isActive : bool, on : bool,
hasKeyboardFocus : bool) : void
描述:用GUIStyle 绘制文本和图片。如果图片太大,它将被缩小。
◆ function Draw(position : Rect, content : GUIContent, controlID : int, on : bool = false) : void
描述:GUI 代码中使用的主要绘制函数。
◆ function DrawCursor(position : Rect, content : GUIContent, controlID : int, Character : int) :
void
描述:用选定的内容绘制这个GUIStyle
◆ function DrawWithTextSelection(position : Rect, content : GUIContent, controlID : int,
firstSelectedCharacter : int, lastSelectedCharacter : int) : void
描述:用选定的内容绘制这个GUIStyle
◆ function GetCursorPixelPosition(position : Rect, content : GUIContent, cursorStringIndex :
int) : Vector2
描述:获取给定字符串索引的像素位置。
◆ function GetCursorStringIndex(postion : Rect, content : GUIContent, cursorPixelPosition :
Vector2) : int
描述:当用户在cursorPixelPosition 处点击时获取光标位置(索引到内容文本)这部计算内
容中任何图片。
类变量
◆ static var none : GUIStyle
描述:空GUIStyle 的快捷方式。
这个风格不包含装饰而仅仅以缺省字体渲染所有东西。
function OnGUI()
{ //制作一个没有装饰的按钮
GUI.Button(“I’m very bare”, GUIStyle.none);
}
类方法
◆ static implicit function GUIStyle(str : string) : GUIStyle
描述:从当前皮肤获取一个名为GUI 风格。
GUIUtility

用于制作新GUI 空间的工具类。
除非从头开始创建自己的GUI 控件,否则你不需要使用这些函数。
类变量
◆ static var hotControl : int
描述:当前具有特点的控件controlID。
热点空间是临时激活的一个控件。当用于在一个按钮上按下鼠标时,它变为热点。当一个
控件具有热点时,其他控件不允许响应鼠标事件。一旦用户鼠标示范,这个控件设置
hotControl 为0 以便表明其他控件可以响应用户输入。
◆ static var keyboardControl : int
描述:具有键盘焦点控件的controlID。
类方法
◆ static function GetControlID(focus : FocusType) : int
◆ static function GetControlID(hint : int, focus : FocusType) : int
◆ static function GetControlID(content : GUIContent, focus : FocusType) : int
描述:为一个控件获取唯一ID。
◆ static function GetControlID(focus : FocusType, position : Rect) : int
◆ static function GetControlID(hint : int, focus : FocusType, position : Rect) : int
◆ static function GetControlID(content : GUIContent, focus : FocusType, position : Rect) : int
描述:为一个控件获取唯一ID。
◆ static function GetStateObject(t : type, controlID : int) : object
描述:从一个controlID 获取一个状态对象。
这将返回一个可重用的状态对象,它的controlID 是唯一的。如果没有,一个新的将被创建
并添加到ControlID。
◆ static function GUIToScreenPoint(guiPoint : Vector2) : Vector2
描述:将一个点从GUI 位置转化为屏幕空间。
参见:GUIUtility, ScreenToGUIPoint
◆ static function MoveNextAndScroll(forward: bool) : void
描述:只允许从OnGUI 内部调出GUI 函数
◆ static function QueryStateObject(t: Type, controlID : int) : object
描述:从一个controlID 获取一个存在的状态物体。
这个返回一个可回收的状态物体。这个物体具有唯一的controlID。如果没有,这个函数将
返回null。
◆ static function RotateAroundPivot(angle: float, pivotPoint : Vector2) : void
描述:使GUI 围绕一个点旋转的辅助函数。
修改GUI.matrix 来绕着pivotPoint 旋转所有的GUI 元素angel 度。
参见:GUI.matrix, ScaleAroundPivot
◆ static function ScaleAroundPivot(scale: Vector2, pivotPoint: Vector2) : void
描述:使GUI 围绕一个点缩放的辅助函数。
修改GUI,.matrix 来绕着pivotPoint 缩放所有的GUI 元素angel 度。
参见:GUI.matrix, RotateAroundPivot
◆ static function ScreenToGUIPoint(screenPoint : Vector2) : object
描述:将一个点从屏幕空间转化为GUI 位置。
用于反转计算GUIToScreenPoint 的值。
参见:GUIUtility.GUIToScreenPoint。
GUI

GUI 类是Unity GUI 的手工定位接口
参见:GUI tutorial
类变量
◆ static var backgroundColor : Color
描述:全局的修改由GUI 渲染的所有元素的背景颜色。
这个获取多个color。
参见:contentColor, color
◆ static var changed : bool
描述:有任何控件的输入数据改变吗?
◆ static var color : Color
描述:全局的修改GUI 颜色。
这将影响背景和文本颜色。
参见:backgroundColor, contentColor
◆ static var contentColor : Color
描述:修改由GUI 渲染的所有文本的颜色。
这个获取多个color。
参见:backgroundColor : Color
◆ static var depth : int
描述:当前执行的GUI 行为的排序深度
当你有不同的脚本同时运行时。设置这个来决定顺序。
◆ static var enabled : bool
描述:GUI 启用了?
设置这个值为假将禁用所有GUI 交互。所有的控件将以半透明方式绘制。并将不响应用户
输入。
//这个值跟踪扩展的选项是否可以被打开。
var allOptions = true;
//两个扩展选项
var extended1 = true;
var extended2 = true;
function OnGUI()
{
//制作一个开关控件以便允许用户编辑扩展的选项
allOptions = GUI.Toogle(Rect(0, 0, 150, 20), allOptions, “Edit All Options”);
//将它的值赋给GUIEnabled – 如果上面的复选框被禁用
//这些GUI 元素将
GUIenabled = allOptions
//这两个控件只在上面的按钮为On 时启用。
extended1 = GUI.Toogle(Rect(20, 20, 130, 20), extended1, “Extended Option 1”);
extended2 = GUI.Toogle(Rect(20, 40, 130, 30), extended2, “Extended Option 2”);
//使用条件语句,以使GUI 代码可以再次启用
GUI.enabled = true;
//制作一个OK 按钮
if(GUI.Button(Rect(0, 60, 150, 20), “OK”))
print(“user clicked ok”);
}
◆ static var matrix : Matrix4x4
描述:GUI 变换矩阵
◆ static var skin : GUISkin
描述:使用的全局皮肤
你可以在任何时候设置这个来改变GUI 的外观。如果设置为null,这个皮肤将使用默认的
Unity 皮肤。
◆ static var tooltip : string
描述:鼠标移动到空间上的提示信息(只读)。
创建GUI 空间是。你可以给他传递一个提示。这可以通过改变内容参数来制作一个自定义
GUIContent 物体,而不是仅仅传递一个字符串。
但鼠标经过带有提示性的控件时,它设置全局的GUI.tooltip 值为传入得知。在OnGUI 代
码的末端,你可以制作一个标签来显示GUI.tooltip 的值。
function OnGUI()
{
//制作一个按钮,它使用自定义GUI.Content 参数来传递提示。
GUI.Button(Rect(10, 10, 100, 20), GUIContent(“Click me”, “This is the tooltip”));
//显示鼠标指向或具有键盘焦点的控件提示
GUI.Button(Rect(10, 55, 100, 20), “No tooltip here”);
}
你可以使用元素的次序来创建’层次化的’提示
function OnGUI()
{
//这个box 比随后的许多元素大,并且它有一个提示。
GUI.Box(Rect(5, 35, 110, 75), GUIContent(“Box”, “this box has a tooltip”));
这个按钮在box 内部,但是没有提示,因此它不会覆盖这个box 的提示。
GUI.Button(Rect(10, 55, 100, 20), “No tooltip here”);
这个按钮在box 内部,并且有一个提示,因此它会覆盖这个box 的提示。
GUI.Button(Rect(10, 80, 100, 20), GUIContent(“I have a tooltip”, “This button overrides the
box”));
//最后,显示来自鼠标指向或具有键盘焦点的提示
GUI.Label(Rect(10, 40, 100, 40), GUI.tooltip);
}
Tooltip 也能用来实现一个OnMouseOver/OnMouseOut 消息系统:
var lastTooltip = “”;
function OnGUI()
{
GUILayout.Button(GUIContent(“Play Game”, “Button1”));
GUILayout.Button(GUIContent(“Quit”, “Button2”));
if(Event.current.type == EventType.repaint && GUI.tooltip! = lastTooltip)
{
if(lastTooltip != “”)
SendMessage(lastTooltip + “OnMouseOut”, SendMessageOptions, DontRequireReceiver);
if(GUI.tooltip != “”)
SendMessage(GUI.tooltip + “OnMouseOut”, SendMessageOptions, DontRequireReceiver);
lastTool\tip = GUI.tooltip;
}
}
类方法
◆ static function BeginGroup(position : Rect) : void
◆ static function BeginGroup(position : Rect, text : string) : void
◆ static function BeginGroup(position : Rect, image : Texture) : void
◆ static function BeginGroup(position : Rect, content : GUIContent) : void
◆ static function BeginGroup(position : Rect, style : GUIStyle) : void
◆ static function BeginGroup(position : Rect, text : string, style : GUIStyle) : void
◆ static function BeginGroup(position : Rect, image : Texture, style : GUIStyle) : void
◆ static function BeginGroup(position : Rect, content : GUIContent, style : GUIStyle) : void
参数
position 屏幕用于组的矩形区域。
text 显示在该组上的文本。
image 显示在该组上的Texture。
content 用于这个组的文本,图形和提示。如果提供,任何鼠标点击被组捕获,并且如果没
有设置,不会渲染背景,和传递鼠标点击。
style 用于背景的风格。
描述:
开始组,必须与EndGroup 调用匹配。
当你开始一个组时,用于GUI 控件的坐标系统被设置为(0, 0)是组的左上角。所有控件被附
加到组。组可以嵌套– 如果使用,子被附加到他们的父。
当你在屏幕上移动一组GUI 元素是这是非常有用的。一个普通的用法是设计你的菜单以适
合一个特定的屏幕的尺寸。然后在更大的显示器上居中显示GUI。
function OnGUI()
{
//约束所有的绘图在屏幕中心800*600 的区域
GUI.BeginGroup(new Rect(Screen.width / 2 – 400, Screen.height / 2 – 300, 800, 600));
//在由BeginGroup 定义的新坐标空间中绘制一个box
//注意,现在(0,0)已经被移动了
GUI.Box(new Rect(0, 0, 800, 600), “This box is new centered! – Here you would put your main
menu”);
//需要用一个EndGroup 来匹配所有的BeginGroup 调用。
GUI.EndGroup();
}
参见:matrix, BeginScrollView
◆ static function BeginScrollView(position : Rect, scrollPostion: Vector2, viewRect : Rect) :
Vector2
◆ static function BeginScrollView(position : Rect, scrollPostion: Vector2, viewRect : Rect,
alwaysShowHorizontal : bool, alwaysShowVertical : bool) : Vector2
◆ static function BeginScrollView(position : Rect, scrollPostion: Vector2, viewRect : Rect,
horizontalScrollbar : GUIStyle, verticalScrollbar : GUIStyle) : Vector2
◆ static function BeginScrollView(position : Rect, scrollPostion: Vector2, viewRect : Rect,
alwaysShowHorizontal : bool, alwaysShowVertical : bool, horizontalScrollbar : GUIStyle,
verticalScrollbar : GUIStyle) : Vector2
参数
position 屏幕上用了ScrollView 的矩形区域
scrollPosition 用来显示的位置。
viewRect 用在滚动视内部的矩形。
alwaysShowHorizontal 可选的参数用来总是显示水平滚动条。如果为假或不设置,它只在
clientRect 比position 宽的时候显示
alwaysShowVertical 可选的参数用来总是显示垂直滚动条。如果为假或不设置,它只在
clientRect 比position 长的时候显示。
horizontalScrollbar 用于水平滚动条的可选GUIStyle,如果不设置,将使用当前GUISkin 的
horizontalScrollbar.
verticalScrollbar 用于水平滚动条的可选GUIStyle,如果不设置,将使用当前GUISkin 的
verticalScrollbar.
返回Vector2 – 修改过的scrollPosition 回传这个变量。如下的例子。
描述:在你的GUI 中开始滚动视。
ScrollViews 让你在屏幕上制作一个较小的区域。使用放置在ScrollView 边上的滚动条来查
看一个较大的区域。
//滚动视口的位置
var smallPosition = Vector2.zero;
function OnGUI()
{
//一个绝对位置的例子。制作一个具有较大区域的滚动视。
//并将它放置在一个小的矩形中。
scrollPosition = GUI.BeginScrollView(Rect(10, 300, 100, 100), scrollPosition, Rect(0, 0, 220,
200));
//制作四个按钮– 每个角上有一个,由BeginScrollView 最后一个参数定义的坐标系统。
GUI.Button(Rect(0, 0, 100, 20), “Top-left”);
GUI.Button(Rect(0, 0, 100, 20), “Top-right”);
GUI.Button(Rect(0, 0, 100, 20), “Bottom-left”);
GUI.Button(Rect(0, 0, 100, 20), “Bottom-right”);
//结束前面开始滚动视
GUI.EndScrollView();
}
◆ static function Box(position : Rect, text : string) : void
◆ static function Box(position : Rect, image : Texture) : void
◆ static function Box(position : Rect, content : GUIContent) : void
◆ static function Box(position : Rect, text : string, style : GUIStyle) : void
◆ static function Box(position : Rect, image : Texture, style : GUIStyle) : void
◆ static function Box(position : Rect, content : GUIContent, style : GUIStyle) : void
参数
position 屏幕上用于box 的矩形区域
text 显示在该box 上的文本
image 显示在该box 上的Texture
content 用于这个box 的文本,图形和提示
style 使用的风格。如果不设置,将使用当前GUISkin 的box 风格。
描述:制作一个图形box。
◆ static function BringWindowToBack(windowID: int) : void
参数
windowID 在window 调用中创建窗体时使用的唯一标识。
描述:将特定的窗口放到浮动窗口的后面。
◆ static function BringWindowToFront(windowID: int) : void
参数
windowID 在Window 调用中创建窗体时使用的唯一标识。
描述:将特定的窗口放到浮动窗口的前面。
◆ static function Button(position : Rect, text : string) : bool
◆ static function Button(position : Rect, image : Texture) : bool
◆ static function Button(position : Rect, content : GUIContent) : bool
◆ static function Button(position : Rect, text : string, style : GUIStyle) : bool
◆ static function Button(position : Rect, image : Texture, style : GUIStyle) : bool
◆ static function Button(position : Rect, content : GUIContent, style : GUIStyle) : bool
参数
position 屏幕上用于按钮的矩形区域
text 显示在该按钮上的文本
image 显示在该按钮上的Texture
content 用于这个按钮的文本,图形和提示
style 使用的风格。如果不设置,将使用当前GUISkin 的button 风格。
返回bool - /true/当用户单击按钮时
描述:制作一个简单的按钮,用户点击它们的时候,就会有些事情发生。
◆ static function DragWindow(position : Rect) : void
参数
position 可以拖动的窗口部分。这个被附加到实际窗口。
描述:让窗口可拖动。
插入这个函数的在你的窗口代码中使窗口可拖动。
var windowRect = Rect(20, 20, 120, 50);
function OnGUI()
{
//注册窗体
windowRect = GUI.Window(0, windowRect, DoMyWindow, “My Window");
}
//制作窗体内容
function DoMyWindows(windowID : int)
{
//制作一个非常长的矩形,高20 像素。
//这将使得窗口可以调整大小,通过顶部的标题栏– 不管它有多宽。
GUI.DragWindow(Rect(0, 0, 10000, 20));
}
◆ static function DragWindow() : void
如果你想将整个窗体背景作为一个可拖动区域,不使用参数并将DragWindow 放置到整体
函数的最后。
这意味着任何其他类型的控件将首先被处理并且拖动将只在没有其他控件获得焦点时使
用。
◆ static function DrawTexture(position : Rect, image : Texture, scaleMode : ScaleMode =
stretchToFill, alphaBlend : bool = true, imageAspect : float = 0) : void
参数
position 在屏幕上绘制一个内部包含有纹理的矩形。
image 需要被绘制的纹理。
scaleMode 定义了当矩形的长宽比和内部图像的长宽比不同时如何缩放图像。
alphaBlend 定义了alpha 值是否参与图像的混合(默认为真)。如果为假,图像将会被绘
制并显示。
imageAspect 源图像的的长宽比。如果是0(默认值),则使用图像自身的长宽比。
描述:在一个矩形内部绘制一个纹理。
参见:GUI.color, GUI.contentColor
◆ static function EndGroup() : void
描述:结束一个组
参见:BeginGroup()。
◆ static function EndScrollView : void
描述:结束一个由BeginScrollView 开始的滚动视。
◆ static function FocusControl(name : string) : void
描述:把键盘焦点转移到定义的控件。
参见:SetNextControlName, GetNameOfFocusedControl。
var username = "username";
function OnGUI ()
{ // 设置一个文本域中内部名称
GUI.SetNextControlName ("MyTextField");
// Make the actual text field.
username = GUI.TextField (Rect (10,10,100,20), username);
// If the user presses this button, keyboard focus , will move.
if (GUI.Button (Rect (10,40,80,20), "Move Focus"))
GUI.FocusControl ("MyTextField");
}
◆ static function FocusWindow(windowID : int) : void
参数:
windowID 当调用Window 而创建的窗口的标识符。
描述:使一个窗口被激活。
参见:GUI.UnfocusWindow
◆ static function GetNameOfFocusedControl() : string
描述:返回当前激活的控件的名字。控件的名字是由SetNextControlName 函数创建的。当
有名字的控件被激活时,函数返回它的名字;否则的话返回一个空字符串。
var login = "username";
var login2 = "no action here";
function OnGUI ()
{
GUI.SetNextControlName ("user");
login = GUI.TextField (Rect (10,10,130,20), login);
login2 = GUI.TextField (Rect (10,40,130,20), login2);
if (Event.current.Equals (Event.KeyboardEvent ("return")) &&
GUI.GetNameOfFocusedControl () == "user")
{
Debug.Log ("Login");
}
if (GUI.Button (new Rect (150,10,50,20), "Login"))
Debug.Log ("Login");
}
参见:SetNextControlName, FocusControl
login2 = GUI.TextField(new Rect(10, 40, 130, 20), login2);
if(Event.current.Equals(Event.KeyboardEvent.(“return”))&&GUI.GetNameOfFocusedControl()
== “user”)
Debug.log(“Login”);
if(GUI.Button(new Rect(150, 10, 50, 20), “Login”))
Debug.log(“Login”);
}
参见:SetNextControlName
◆ static function HorizontalScrollbar(position : Rect, value : float, size : float, leftValue : float,
rightValue : float) : bool
◆ static function HorizontalScrollbar(position : Rect, value : float, size : float, leftValue : float,
rightValue : float, style : GUIStyle) : bool
参数
position 屏幕上用于滚动条的矩形区域
value 在min 和max 之间的位置
size 能看见多大?
leftValue 滚动条左边的值
rightValue 滚动条右边的值
style 用于滚动条背景的风格。如果不设置,将使用当前GUISkin 的horizontalScrollbar。
返回float – 修改后的值。这可以通过拖动这个滚动条,或者单击两端的箭头来改变。
描述:制作一个水平滚动条。滚动条可以用来滚动文档。大多数情况下,你会使用scrollViews
代替。
找到额外的元素:
在滚动条两端的按钮将在当前皮肤中搜索”leftbutton”和”rightbutton”作为风格。滚动条的滑
块(你拖动的东西)将搜索并使用名为“thumb”的风格。
//这将使用下面的风格名来决定该按钮的尺寸/位置
//MyScrollbarrightbutton – 用于左侧按钮的风格名称
//MyScrollbarleftbutton – 用于右侧按钮的风格名称
//MyScrollbarthumb – 用于滑块的风格名称
scrollPos = HoriztontalScrollbar(Rect(0, 0, 100, 20), scrollPos, 1, 0, 100, “My Scrollbar”);
◆ static function HorizontalSlider(position : Rect, value : float, leftValue : float, rightValue :
float) : float
◆ static function HorizontalSlider(position : Rect, value : float, leftValue : float, rightValue :
float, slider : GUIStyle, thumb : GUIStyle) : float
参数
position 屏幕上用于滑杆的矩形区域
value 滑杆显示的值。这个决定可拖动的位置。
leftValue 滑杆左边的值
rightValue 滑杆右边的值
slider 用于显示拖动区域的GUIStyle 。如果不设置, 将使用当前GUISkin 的
horizontalSlider。
thumb 用于显示拖动块的GUIStyle 。如果不设置, 将使用当前GUISkin 的
horizontalSliderThumb。
返回float – 被用户设置的值。
描述:一个用户可以拖动的滑杆。可以在min 和max 只见改变一个值。
◆ static function Label(position : Rect, text : string) : void
◆ static function Label(position : Rect, image : Texture) : void
◆ static function Label(position : Rect, content : GUIContent) : void
◆ static function Label(position : Rect, text : string, style : GUIStyle) : void
◆ static function Label(position : Rect, image : Texture, style : GUIStyle) : void
◆ static function Label(position : Rect, content : GUIContent, style : GUIStyle) : void
参数
position 屏幕上用于标签的矩形区域
text 显示在该标签上的文本
image 显示在该标签上的Texture
content 用于这个标签的文本,图形和提示
style 使用的风格。如果不设置,将使用当前GUISkin 的label
描述:在屏幕上制作一个文本或者纹理标签.
标签没有用户交互,不会获取鼠标点击并总是以普通风格渲染。如果你想制作一个可视化
响应用户输入的控件,使用一个Box 控件。
例如:绘制一个传统的Hello world 字符串
function OnGUI
{
GUI.Label(Rect(10, 10, 100, 20), “Hello world”);
}
例如:在屏幕上绘制一个纹理。标签也用于显示纹理,而不仅是字符串。简单传递一个纹
理。
var textureToDisplay : Texture2D;
function OnGUI()
{
GUI.Label(Rect(10, 40, textureToDisplay.width, textureToDiplay.height), textureToDisplay);
}
◆ static function PasswordField(position : Rect, password : string, markChar : char) : string
◆ static function PasswordField(position : Rect, password : string, markChar : char,
maxLength : int) : string
◆ static function PasswordField(position : Rect, password : string, markChar : char, style :
GUIStyle) : string
◆ static function PasswordField(position : Rect, password : string, markChar : char, markChar :
char, style : GUIStyle) : string
参数
position 屏幕上用于文本的矩形区域
password 用于编辑的密码。这个函数返回值应该被赋回这个字符串。如下的例子。
markChar 用来隐藏密码的字符。
maxLength 字符串的最大长度。如果不设置,用户可以一直输入。
style 使用的风格。不过不设置,将那个使用当前GUISkin 的textField 风格。
返回string – 编辑过的密码
描述:制作一个用户可以输入密码的文本域。
var passwordToEdit = “My Password”;
function OnGUI()
{
//制作一个文本来调整stringToEdit。
passwordToEdit = GUI.PasswordField(Rect(10, 10, 200, 20), passwordToEdit, “*”, 25);
}
◆ static function RepeatButton(position : Rect, text : string) : bool
◆ static function RepeatButton(position : Rect, image : Texture) : bool
◆ static function RepeatButton(position : Rect, content : GUIContent) : bool
◆ static function RepeatButton(position : Rect, text : string, style : GUIStyle) : bool
◆ static function RepeatButton(position : Rect, image : Texture, style : GUIStyle) : bool
◆ static function RepeatButton(position : Rect, content : GUIContent, style : GUIStyle) : bool
参数
position 屏幕上用于按钮的矩形区域
text 显示在该按钮上的文本
image 显示在该按钮上的Texture
content 用于这个按钮的文本,图形和提示
style 使用的风格。不过不设置,将那个使用当前GUISkin 的button 风格。
返回bool - /true/当用户单击按钮时。
描述:制作一个按钮。当用户按住它时一直是激活的。
◆ static function ScrollTo(position : Rect) : void
描述:滚动所有包含在scrollview 中的数据以便position 可见。
◆ static function SelectionGrid (position : Rect, selected : int, texts : string[], xCount : int) : int
◆ static function SelectionGrid (position : Rect, selected : int, images : Texture[], xCount : int) :
int
◆ static function SelectionGrid (position : Rect, selected : int, content : GUIContent[], xCount :
int) : int
◆ static function SelectionGrid (position : Rect, selected : int, texts : string[], xCount : int, style :
GUIStyle) : int
◆ static function SelectionGrid (position : Rect, selected : int, images : Texture[], xCount : int,
style : GUIStyle) : int
◆ static function SelectionGrid (position : Rect, selected : int, content : GUIContent[], xCount :
int, style : GUIStyle) : int
参数
position 屏幕上用于网格的矩形区域。
selected 选择的网格按钮的索引
texts 显示在网格按钮上的字符串数组
images 显示在网格按钮上的纹理数组
contents 用于这个网格按钮的文本,图形和提示数组
xCount 在水平方向有多少个像素。空间将被缩放来适应,除非风格定义了一个fixWidth。
style 使用的风格。如果不设置,将使用当前GUISkin 的button 风格。
返回int – 选择按钮的索引。
描述:制作一个按钮网络。
◆ static function SetNextControlName(name : string) : void
描述:设置下一个控件的名称。
这是接下来的控件被注册。
◆ static function TextArea(position : Rect, text : string) : string
◆ static function TextArea(position : Rect, text : string, maxLength : int) : string
◆ static function TextArea(position : Rect, text : string, style : GUIStyle) : string
◆ static function TextArea(position : Rect, text : string, maxLength : int, style : GUIStyle) :
string
参数
position 屏幕上用于文本的矩形区域
text 用于编辑的文本。这个函数返回值应该被赋回这个字符串。如下的例子。
maxLength 字符串的最大长度。如果不设置,用户可以一直输入。
style 使用的风格。如果不设置,将使用当前GUISkin 的textArea。
返回string – 编辑过的字符串
描述:制作一个多行文本区域。这里用户可以编辑这个字符串。
var stringToEdit = “Hello World\nI’ve got 2 lines…”;
function OnGUI()
{
//制作一个多行文本区域来调整stringToEdit
stringToEdit = GUI.TextArea(Rect(10, 10, 200, 100), stringToEdit, 200);
}
◆ static function TextField(position : Rect, text : string) : string
◆ static function TextField(position : Rect, text : string, maxLength : int) : string
◆ static function TextField(position : Rect, text : string, style : GUIStyle) : string
◆ static function TextField(position : Rect, text : string, maxLength : int, style : GUIStyle) :
string
参数
position 屏幕上用于文本的矩形区域
text 用于编辑的文本。这个函数返回值应该被赋回这个字符串。如下的例子。
maxLength 字符串的最大长度。如果不设置,用户可以一直输入。
style 使用的风格。如果不设置,将使用当前GUISkin 的textField 风格。
返回string – 编辑过的字符串
描述:制作一个单行文本域。这里用户可以编辑这个字符串。
var stringToEdit = “Hello World”;
function OnGUI()
{
//制作一个文本域来调整stringToEdit
stringToEdit = GUI.TextField(Rect(10, 10, 200, 20), stringToEdit, 25);
}
◆ static function Toggle(position : Rect, value : bool, text : string) : bool
◆ static function Toggle(position : Rect, value : bool, image : Texture) : bool
◆ static function Toggle(position : Rect, value : bool, content : GUIContent) : bool
◆ static function Toggle(position : Rect, value : bool, text : string, style : GUIStyle) : bool
◆ static function Toggle(position : Rect, value : bool, image : Texture, style : GUIStyle) : bool
◆ static function Toggle(position : Rect, value : bool, content : GUIContent, style : GUIStyle) :
bool
参数
position 屏幕上用于按钮的矩形区域
value 这个按钮是打开的或关闭
text 显示在该按钮上的文本
image 显示在该按钮上的Texture
content 用于这个按钮的文本,图形和提示
style 使用的风格。如果不设置,将使用当前GUISkin 的toggle 风格。
返回bool – 按钮的新值
描述:制作一个on/off 开关按钮
◆ static function Toolbar(position : Rect, selected : int, texts : string[]) : int
◆ static function Toolbar(position : Rect, selected : int, images : Texture[]) : int
◆ static function Toolbar(position : Rect, selected : int, contents : GUIContent[]) : int
◆ static function Toolbar(position : Rect, selected : int, texts : string, style : GUIStyle[]) : int
◆ static function Toolbar(position : Rect, selected : int, images : Texture, style : GUIStyle[]) :
int
◆ static function Toolbar(position : Rect, selected : int, contents : GUIContent[], style :
GUIStyle) : int
参数
position 屏幕上用于工具栏的矩形区域
selected 选择按钮的索引
texts 显示在该工具栏上的字符串数组
images 显示在工具栏按钮上的纹理数组
contents 用于这个工具栏的文本,图形和提示数组。
style 使用的风格。如果不设置,将使用当前GUISkin 的button 风格。
返回int – 选择按钮的索引
描述:制作一个工具栏
◆ static function UnfocusWindows() : void
描述:从所有窗体上移除焦点。
◆ static function VerticalScrollbar(position : Rect, value : float, size : float, topValue : float,
buttonValue : float) : float
◆ static function VerticalScrollbar(position : Rect, value : float, size : float, topValue : float,
buttonValue : float, style : GUIStyle) : float
参数
position 屏幕上用于滚动条的矩形区域。
value 在min 和max 之间的位置。
size 能看见多大?
topValue 滚动条顶端的值
bottomValue 滚动条底端的值
style 使用的风格。如果不设置,将使用当前GUISkin 的horizontalScrollbar 风格。
返回float – 修改后的值。这可以通过拖动这滚动条,或者单击两端的箭头来改变。
描述:制作一个垂直滚动条。滚动条可以用来滚动文档。大多数情况下,你会使用scrollViews
代替。
找到额外的元素:
在滚动条两端的按钮将在当前皮肤中搜索“upbutton”和“downbutton”作为风格。滚动条的滑
块(你拖动的东西)将搜索并使用名为“thumb”的风格。
//这将使用下面的风格名来决定该按钮的尺寸位置。
//MyVertScrollbarupbutton – 用于上端按钮的风格名称。
//MyVertScrollbardownbutton – 用于下端按钮的风格名称。
//MyVertScrollbarthumb – 用于滑块的风格名称。
scrollPos = HorizontalScrollbar(Rect(0, 0, 100, 20), scrollPos, 1, 0, 100, “MyVertScrollbar”);
◆ static function VerticalSlider(position : Rect, value : float, topValue : float, buttonValue :
float) : float
◆ static function VerticalSlider(position : Rect, value : float, topValue : float, buttonValue : float,
slider : GUIStyle, thumb : GUIStyle) : float
参数
position 屏幕上用于滑杆的矩形区域。
value 滑杆显示的值。这个决定可移动滑块的位置。
topValue 滑杆顶端的值
bottomValue 滑杆底端的值
slider 用于显示拖动区域的GUIStyle。如果不设置,将使用当前GUISkin 的horizontalSlider。
thumb 用于显示土洞区域的GUIStyle 。如果不设置, 将使用当前GUISkin 的
horizontalSliderThumb。
返回float – 被用户设置的值。
描述:一个用户可以拖动的垂直滑杆。可以在min 和max 之间改变一个值。
◆ static function Window(id : int, position : Rect, func : WindowFunction, text : string) : Rect
◆ static function Window(id : int, position : Rect, func : WindowFunction, image : Texture) :
Rect
◆ static function Window(id : int, position : Rect, func : WindowFunction, content :
GUIContent) : Rect
◆ static function Window(id : int, position : Rect, func : WindowFunction, text : string, style :
GUISytle) : Rect
◆ static function Window(id : int, position : Rect, func : WindowFunction, image : Texture,
style : GUIStyle) : Rect
◆ static function Window(id : int, clientRect : Rect, func : WindowFunction, title : GUIContent,
style : GUIStyle) : Rect
参数
id 用于每个窗口的唯一ID。这是用于接口的ID。
clientRect 屏幕上用于组的矩形区域。
func 在窗体内部创建GUI 的函数。这个函数必须使用一个函数– 当前创建GUI 的窗体
id
text 作为窗体标签的文本。
image 用于在标题栏上显示图片的Texture
content 用于这个窗口的文本,图形和提示。
style 用于窗口的可选风格。如果不设置,将使用当前GUISkin 的window。
返回Rect – 窗口位于的矩形位置
描述:制作一个弹出窗口
窗口浮动在普通GUI 控件之上,具有单击激活的特点并可以有选择的随意被端用户拖动。
不像其他的控件,你需要传递给他们一个独立的功能并放置在窗口中。注意:如果你使用
GUILayout 在窗口中放置你的组件,你应该使用GUILayout.Window。这是一个小例子帮助
你开始:
var windowRect = Rect(20, 20, 120, 50);
function OnGUI()
{
//注册窗口。注意第三个参数。
windowRect = GUI.Window(0, windowRect, DoMyWindow, “My Window”);
}
//制作窗口内容
function DoMyWindow(windowID : int)
{
if(GUI.Button(Rect(10, 20, 100, 20), ”Hello World”))
print(“Get a click”);
}
你可以使用相同的函数来创建多个窗口。需要确保每个窗口有一个自己的ID。例如:
var windowRect0 = Rect(20, 20, 120, 50);
var windowRect1 = Rect(20, 100, 120, 50);
function OnGUI()
//注意窗口。我们创建了两个使用相同函数的窗体
//注意他们的ID 不同。
windowRect0 = GUI.Window(0, windowRect0, DoMyWindow, “My Window”);
windowRect1 = GUI.Window(1, windowRect1, DoMyWindow, “My Window”)
}
//制作窗口内容
function DoMyWindow(windowID : int)
{
if(GUI.Button(Rect(10, 20, 100, 20), “Hello World”))
print(“Get a click in window ” + windowID);
//使窗口可以被拖动
GUI.DragWindow(Rect(0, 0, 10000, 10000));
}
停止显示窗口,简单的在DoGUI 函数内停止调用GUI.Window。
//布尔变量以决定是否显示窗口
//从游戏GUI,脚本,检视面板中或者其他地方改变这个决定窗口是否可见。
var doWindow() = true;
//制作窗口内容
function OnGUI()
{
//制作一个开关变量来隐藏或显示窗口
doWindow() = GUI.Toggle(Rect(10, 10, 100, 20), doWindow(), “Window 0”);
//确保仅在doWindow()为真时调用GUI.Window
if(doWindow())
GUI.Window(0, Rect(110, 10, 200, 60), DoWindow(), “Basic Window”);
}
为了使窗口从自动GUI 获取它的尺寸,使用GUILayout.Window。
调用顺序
窗口需要从后向前绘制。在其他窗口顶部的窗口需要在其他窗口之后绘制。这就意味着你
不能指望你的DoWindow 函数以任何特定的顺序被调用。为了让这个能够工作,当你的创
建窗口时下面值被存储(使用Window 函数),当DoWindow 被调用时取回:GUI.skin,
GUI.enabled, GUI.color, GUI.backgroundColor, GUI.contentColor, GUI.matrix
这就是说很容易像这样制作彩色窗口:
var windowRect0 = Rect(20, 20, 120, 50);
var windowRect1 = Rect(20, 100, 120, 50);
function OnGUI()
{
//这里我们制作了2 个窗口,在这个之前设置GUI.color 的值。
GUI.color = Color.red;
windowRect0 = GUI.Window(0, windowRect0, DoMyWindow, “Red Window”);
GUI.color = Color.green;
windowRect1 = GUI.Window(1, windowRect1, DoMyWindow, “Green Window”);
}
//制作窗口内容
//GUI.color 的值被设置为窗口被创建之前的值。
function DoMyWindow(windowID : int)
{
if(GUI.Button(Rect(10, 20, 100, 20), “Hello world!”))
print(“Got a click in window with color ” + GUI.color);
//使窗口可以被拖动
GUI.DragWindow(Rect(0, 0, 10000, 10000));
}
提示:你可以使用GUI.color 的alpha 组件来淡入淡出窗口。
参见:DragWindow, BringWindowToFront, BringWindowToBack
GeometryUtility

用于普通集合功能的工具类
类方法
◆ static function CalculateFrusturnPlanes(camera : Camera) : Plane[]
描述:计算视锥平面
这个函数取给定的相机视锥并返回它的六个面。
参见:Plane, GeometryUtility.TestPlanesAABB
◆ static function CalculateFrusturnPlanes(worldToProjection : Matrix4x4) : Plane[]
描述:计算视锥平面
这个函数返回由给定的视和投影矩阵定义的视锥的六个面。
参见:Plane, GeometryUtility.TestPlanesAABB
◆ static function TestPlanesAABB(planes : Plane[], bounds : Bounds) : bool
描述:如果包围盒在平面数组内部返回真。
如果包围盒在平面内部或者与任何平面交互返回真。
参见:GeometryUtility.CalculateFrusturnPlanes。
Gizmos

Gizmos 用于场景中给出一个可视化的调试或辅助设置。
所有的Gizmos 绘制都必须在脚本的OnDrawGizmos 或OnDrawGizmosSelected 函数中完成。
OnDrawGizmos 在每一帧都被调用。所有在OnDrawGizmos 内部渲染的Gizmos 都是可见的。
OnDrawGizmosSelected 尽在脚本所附加的物体被选中时调用。
类变量
◆ static var color : Color
描述:设置下次绘制的Gizmos 的颜色。
function OnDrawGizmosSelected()
{
//在物体的前方绘制一个5 米长的线
Gizmos.color = Color.red;
var direction = transform.TransformDirection(Vector3.forward) * 5;
Gizmos.DrawRay(transform.position, direction);
}
◆ static var matrix : Matrix4x4
描述:设置用于渲染所有gizmos 的矩阵。
类方法
◆ Static function DrawCube(center:Vector3,size:Vector3):void
描述:用center 和size 绘制一个立方体.
Function OnDrawGizmosSelected(){
//在变换位置处绘制一个变透明的蓝色立方体
Gizmos.color=Color(1,0,0,5);
Gizmos.DrawCube(transform.position,Vector3(1,1,1));
}
◆ Static function DrawGUITexture(screenRect:Rect,texture:Texture,mat:Material=null):void
描述:在屏幕坐标下绘制一个纹理。用于GUI 背景。
◆ Static function
DrawGUITexture(screenRect:Rect,texture:Texture,leftBorder:int,rightBorder:int,topBorder:int,bot
tomBorder:int,mat:Material=null):void
描述:在屏幕坐标下绘制一个纹理。用于GUI 背景。
◆ Static function Drawicon(center:Vector3,name:string):void
描述:在世界位置center 处绘制一个图标.
这个图标被命名为name 并放置在Assets/Gizmos 文件夹或Unity.app/Resoutces 文件
夹.DrawIcon 允许你在游戏中快速选择重要的物体。
//在物体位置处绘制光源灯泡图标.
//因为我们在OnDrawGizmos 函数内部调用它,在场景视图中
//这个图标总是可点选的.
function OnDrawGizmos(){
Gizmos DrawIcon(transform.position,”Light Gizmo.tiff”);
}
◆ Static function DrawLine(from:Vector3,to:Vector3):void
描述:绘制一条线从from 到to.
Var Larget:Transform;
function OnDrawGizmosSelected(){
if(target != null)
{
//从transform 到target 绘制一条蓝色的线
Gizmos.color = Color.blue;
Gizmos.DrawLine(transform.position,target.position);
}
}
◆ static function DrawRay(r:Ray):void
static function DrawRay(from:Vector3,direction:Vector3):void
描述:绘制一个射线从from 开始到from + direction.
◆ function OnDrawGizmosSelected(){
Gizmos.color = Color.red;
Direction = transform.TransformDirection(Vector3.forward)*5;
Gizmos.DrawRay(transform.positon,direction);
}
◆ Static function DrawSphere(center:Vector3,radius:flont):void
描述:用center 和randins 绘制一个球体.
Function OnDrawGizmosSelected(){
//在变换位置处绘制一个黄色的球体
Gizmos.color = Color.yellow;
Gizmos.DrawSphere(transtorm.position,1);
}
◆ Static function DrawWireCube(center:Vector3, size: Vector3):void
描述:用center 和radius 绘制一个线框立方体.
Function OnDrawGizmosSelected(){
//在变换位置处绘制一个黄色立方体
Gizmos.color = Color.yellow;
Gizmos.DrawWireCube (transtorm.position, Vector3(1,1,1));
}
◆ Static function DrawWireSphere(center:Vector3,radius:float):void
描述:用center 和radius 绘制一个线框球体.
Var explosionRadius = 5.0;
Function OnDrawGizmosSelected(){
//选中的时候显示爆炸路劲
Gizmos.color = Color.white;
Gizmos.DrawSphere(transtorm.position,explpsionRadius);
}
Graphics

Unity 绘制函数的原始接口。
这个是高级快捷地进去Unity 优化网格绘制的地方。只限于Unity Pro.
类方法
◆ static function DrawMesh(mesh:Mesh, position: Vector3, rotation: Quaternion, material:
Material, layer: int, camera: Camera=null, submeshIndex: int, properties:
MaterialPropertyBlock=null): void
◆ static function DrawMesh(mesh:Mesh,matrix:Matrix4x4,material:Material,layer:int,
camera:Camera = null,submeshIndex:int,properties:MaterialPropertyBlock=null):
void
参数
mesh 用于绘制的Mesh.
position 网格的位置。
rotation 网格的旋转。
matrix 网格的变换矩阵(由位置,旋转和变换x 组合)
material 使用的Material.
layer 使用的Layer.
Camera 如果是null(缺省),该网格将在所有相机中被绘制,否则它将
只会在给定的相机中渲染。
submeshIndex 那个子网格被渲染。这只是在网格使用了多个材质的时候
使用。
Properties 在网格绘制前应用到才子的额外材质属性。参考
MaterialPropertyBlock.
描述:绘制一个网格
DrawMesh 在一帧中绘制一个网格。这个网格将受到光照的影响,可以投射接收阴影并
被投射器影响。就像它是某个物体的一部分。他可以绘制于所有相机,或者只是特定的一些
相机
在你想创建人景的网格,而又不想过多的创建和管理游戏物体的时候使用DrawMesh.注意,
DrawMesh 不会立即绘制网格;它仅仅提交它用于渲染。网格将被作为普通渲染过程的一部
分。如果想立即绘制一个网格。使用Graphics.DrawMeshNow。
因为DrawMesh 不会立即绘制网格,在调用这个函数之间修改材质属性并会使材质使用它
们。如果你想绘制一系列相同材质的网格,但是稍微有些不同的属性(例如,改变每个网格
的颜色),那么使用MaterialPropertyBlock 参数。
参见:MateralPropertyBlock.
◆ Static function DrawMeshNow(mesh:Mesh,position:Vector3,rotation:Quatemion):void
描述:在给定的position,用给定的rotation 绘制一个mesh。
这个函数将设置模型视矩阵并绘制网络。当前设置材质的pass 可以被使用(参考Setpass)
◆ Static function
DrawMeshNow(mesh:Mesh,position:Vector3,rotation:Quatemion,materallndex:int):void
描述:在给定的position,用给定的rotation 和一个materialIndex 绘制一个mesh.
◆ Static function DrawMeshNow(mesh:Mesh,matrx:Matrix4x4):void
描述:用给定的matrix 绘制一个mesh.
如果这个矩阵有一个负的缩放这个函数将不会正确渲染物体。
◆ Static function DrawMeshNow(mesh:Mesh,matrx:Matrix4x4,materialIndex:int):void
描述:用给定的matrix 和materialIndex 绘制一个mesh.
如果这个矩阵有一个负的缩放这个函数将不会正确渲染物体。
◆ Static function DrawTexture(screenRect:Rect,texture:Texture,mat:Material = null):void
描述:在屏幕坐标下绘制一个纹理。
◆ Static function
DrawTexture(screenRect:Rect,texture:Texture,leftBorder:int,rughtBord:int,topBorder:int,bottomB
order:int,mat:Material=null):void
描述:在屏幕坐标下绘制一个纹理。
◆ Static function
DrawTexture(screenRect:Rect,texture:Texture,sourceRect:Rect,leftBorder:int,rughtBord:int,topBo
rder:int,bottomBorder:int,mat:Material=null):void
描述:在屏幕坐标下绘制一个纹理
◆ static function
DrawTexture(screenReet:Rect,texture:Texture,sourceRect:Rect,leftBordr:int.rightBrder:int.topBor
der:int,bottomBorder:int,color:Bolor,mat:Material=null):void
描述:在屏幕坐标下绘制一个纹理。
Hashtable

函数
◆ function Add(key:Object, value:Object):void
描述:添加指定的键和值到哈希表。
◆ function Clear():void
描述:数量被设置为0,并且从该集合中元素到其他对象的引用也将被释放,容量没有改变。
///这个方法是O(n)操作,这里n 是元素数量。
◆ function Contains(key:object):bool
描述:决定该哈希表中是否包含指定的键。
◆ function ContainsKey (key:object):bool
描述:从哈希表中移除指定键的元素。
◆ function Remove(key:object):void
描述:从哈希表中移除指定键的元素。
HostData

这个是用来保存单个主机信息的数据结构。
从master 服务器取回的主机列表,使用这个类表示单个主机。
变量
◆ var comment:string
描述:一个多用途的注释(可以保存数据)
◆ var conneetedfPlaycrs:int
描述:当前连接的玩家
◆ var gameName:stting
描述:游戏的名称(像John Doe's Game)
◆ var gameType:string
描述:游戏类型(像MyUniqueGameType)
◆ var ip:string[]
描述:服务器IP 地址
◆ var passwordProtected:bool
描述:服务器需要密码吗?
◆ var playerLimit:int
描述:最大玩家限制
◆ var port:int
描述:服务器端口
◆ var nseNat:bool
描述:这个服务器需要NAT 穿透吗?
input

到输入系统的接口。
使用这个类读取在Input Manager 中设置的轴。
使用Input.GetAxis 用下面的缺省轴读取轴心:"Horizontal"和"Vertical"被映射到摇杆,A,
W,S,D 和方向键,"Mouse X"和"Mouse Y"被映射到鼠标添量,"Fire1","Fine2","Fine3"映射
到Ctrl,Alt,Cmd 键和鼠标的三键或腰杆按钮。新的输入轴可以在Input Manager 中添加。
如果你在为任何一种运动行为使用输入,那么使用Inpur.GetAxis。它给你一种平滑的可配置
的输入,这个输入可以被映射到键盘,摇杆或鼠标。
使用Input.GetButton 用于像事件一样的行为,不要将它用于移动,Input.GetAxis 将使脚本代
码更小更简单。
类变量
◆ static var anyKey:bool
描述:当前按住了任何键或鼠标按钮吗?(读取)
◆ static var anyKeyDown:bool
描述:用户按下任何键或鼠标按钮返回(Rend Only)。直到用户释放所用键/按钮并再次接
下任何键/按钮时才返回真。
◆ static var input: String
描述:返回这一帧中键盘的输入(只读)。
只有ASCII 可以包含在inputString 中。
该字符串可以包含两个能被处理的特殊字符:字符“\b”代表退格。
*符"\n"表示回车。
//显示如何从键盘读取输入
//(例如,用户输入它的名字)。
//你需要附加这个脚本到一个GUTText 物体。function Updarc(){
for (var c;char in Input inputString){
//退格,移除最后一个字符
if(c=="\b") {
iftguiText.Lcngth.text.Substring(0,guiText.text Length-1);
}
//结束
efse if (e=="\n"){
prinr("Uscr cntered his name:"+guiText,text);
}
//正常的文本输入.附加到尾部
elsc
}
guiText.text+=c;
}
}
}
◆ static var mousePosition:Vcctor3
描述:当前鼠标在像素坐标下的位置。
屏幕或窗体的左下为(0,0),屏幕或窗体的左上为(Screen.width,Screen.height).
var particle:GamcObject,
function Update() {
if (lnput,GctButtonDown{"Firel")){
//从当前鼠标坐标处创建一个射线
var ray=Camera.main.ScreenPointToRay(Input mousePositicn);
if{Physics.Raycast(ray)) {
//如果碰到创建一个粒子
Instontiatc(particlc,transfonn.position,transfonn.rotation);
}
}
}
类方法
◆ static function CetAxis(axinName:string):float
描述:设置由axinName 确实虚拟轴的值。
对于键盘和摇杆输入,这个值将在-1...1。
一个非常简单的行驶在x-z 平面的汽车。
var spced=10.0;
var cotatinnSpeed=100.0;
function update()
}
//获取水平和垂直轴,
//默认滴它们被映射到方向键
//这个值的范围在-1 到1
var transtation=loput.getaxis("vertical")*spccd;
var rotation=inpul getaxis ("horizontal"*rotarionspeed)
//使它以10 米/秒速度移动而不是10 米/帧
translation*=time delta time
//沿着物体的Z 轴移动变换
transtorm.transtate(1010translation);
//绕着Y 轴旋转
transform.rotate(0.rotation.0);
}
//指定一个鼠标查看
var horizontalspccd=2.0;
var verticelspeed=2.0
function update()
{
获取鼠标增量,这个没有在范围-1...1 之间
var h=horizontalspeed*inpul.getaxis("mouse X");
var v=verticalspeed*input.getaxis("mouse Y");
transform.rotate(v.h.0);
}
◆static function getaxisraw(axisname:string):float
描述:设置由axisname 确定虚拟轴的值,并且没有使用平滑过滤,
对于键盘和摇杆输入,这个值将在-1...1 的范围内。因为输入没有被平滑,
总是-1,0 或1.如果你想自己处理所有键盘输入的平滑,这个是很有用的。
function update(){
var speed=input.getaxisraw("horizoatal"*time deta time);
transform rotate(0.speed.0);
}
◆static function getbutton(button name:string):bool
描述:当时由button name 确定的虚按钮被按住时返回真。
考虑自动开火-这个将在按钮被按住时一直返回真。
//如果每0.5 秒实例化一个projcctile,
//如果firel 按钮(默认为Ctrl)被按下
var projectile:game object;
var firerate=0.5;
private var nextfire=0.0;
function update()
{
fi(input getbutton("firel")&&time.time>nextfire){
nextfire=time.time+firerate;
clone=instantiate(peojecctile,teansform,position,transffrm,rotation);
}
}
只有使用这个实现事件行为例如,射击,使用input.getaxis 用于任意类型的移动行为
◆static function getbuttondown(button name:steing):bool
描述:当由:button name 确定的虚拟按钮被按下时返回真。
知道用户释放并再次按下时返回真。
//当用户按下firel 按钮时实黎化一个projcctile
var projectile:gameobject;
function update(){
if(input getbution down("firel")){
elone=instantiate(projectile,transforrn,position.transforn.rotinon);
}
}
只使用这个实现事件行为例如,射击,使用lnput.GetAxis 用于任意类型的移动行为。
◆ static function GetButton Up(buttonName:string):bool
描述:当由buttonName 确定的虚拟按钮被释放时返回真.
直到用户按下按钮并再次松开时返回真。
//当用户按下Fire;按钮时实例化一个projectile.
var projectile:GameObject;
function Update O;
if(lnput GetButtonUp("Firel")){
clcne=lnstantiate{projectile,transtorm.position,transform.rotation);
}
}
只使用这个实现事件行为例如,射击。使用lnput.GetAXis 用于任意类型的移动行为,
◆ static funcrion GetKey(name:string):bool
描述:当用户按住由name 确定的键时返回真,考虑自动开火。
键标识列表参考输入管理器。在处理输入时建议使用lnput.GetAxis 和lnput.GetButton
因为它允许端用户定义这些键.
funcrion Update(){
if(lnput.GetKey("up")){
print("up arrow key is held down");
}
if(lnput.GetKey("down"))
}
print("down arrow key is held down");
}
}
◆ static junction GetKey(key:keyGode):bool
描述:当用户按住由key KeyCode 枚举参数确定的键时返回真.
funcrion Update(){
if(lnput.GetKey(KeyCode.UpArrow))}
print("up arrow key is held down");
}
if(lnput.GetKey(KeyCode.DownArrow)){
print("down arrow key is held down");
}
}
◆ static function GetkeyDown(name:string):bool
描述:当用户开始按下由name 确的键时返回真.
直到用户释放按钮并再次按下时返回真.
键标示列表参考lnput Manager.在处理输入时建议使用lnput.GetAxis 和Input.GetBUtton
function Update();
if(input GetkeyDown("space"))
print("space key was pressed");
}
}
static function GetKeyDown(Key:KeyCode):bool
描述:当用户按下由Key KeyCode 枚举参数确定的键时返回真.
function Update();
if{lnput GetKeyDown(KeyCode.Space))
print("space key was pressed");
}
}
◆ static function GetKeyUp(name:sting):bool
描述:当用户释放由name 确定的键时返向真.
直到用户按下按钮并再次松开时返向真。
键标示列表参考lntpot Manager.在处理输入时建议使用lnput.GetAxis 和lnput.GetButton
因为它允许端用户定义这些键.
function Update();{
if(lnput.GetKeyUp("space");
}
}
◆ static function GetKeyUP(Key:KeyCode):bool
描述:当用户释放由Key KeyCde 校举参数确定的键时返回真.
function Update(){
if(lnput,GetKeyUp(KeyCode.Space));
print("space key was feleased");
}
}
◆ statie function GetMouseButton(button:int):bool
描述:返回给定的鼠标按钮是否被按住。
/button/值为0 表示左键,1 表示右键,2 表示中键.
◆ statie function GetMouseButtonDown(button:int)bool
描述:用户按下给定的鼠标按钮时返回真.
直到用户释放按钮并再次按下它时才返回真.button 值为0 表示中键左键,1 表示右键,2 表
示中键.
◆ statie function GetMouseButtonUp(button:int)bool
描述:用户释放给定的鼠标按钮时返回真.
直到用户释放按钮并再次释放它时才返回真.button 值为0 表示中键左键,1 表示右键,2 表
示中键.
◆ statie function ResetlnputAxes();Void
描述:重置所有输入。在ReaetlnputAxes 之后所有轴将返回0 并且所有按钮返回0.
这可用于当重生玩家,并且当你不想任何来自键盘的输入还处于按下时。
lnpu.ReaetlnputAxes();
jointDrive
结构
关节如何沿着本地X 轴移动
变量
◆ var maximumForce:float
描述:用于向指定的方向推动物体的力的量。仅在Mode 包含Velocity 时使用。
◆ var mode:jointDriveMode
描述:驱动是否尝试到这个位置和/或速度.
◆ var positionDamper:float
描述:位置弹簧的阻力强度,只用于mode 包含位置的时候.
◆ var positionSpring:float
描述:朝着定义的方向推动的一个阻力强度。只用于mode 包含位置的时候.
Jointlimits
结构
jointlimits 被Hingejoint 使用来限制关节角度.
参见:Hingejoint
变量
◆ var max:float
描述:关节的上限。当关节角度或位置的上限。
关节将使用力来约束它。
//设置最小链接角度为20 度
hingejoint.limits.max=40;
◆ var maxBounce:float
描述:当关节碰到关节的上限时关节的弹力。
//设置关节反弹时的上限
hingejoint.limits.maxBounce=1;
◆ var min:float
描述:关节的下限。当关节角度或位置的下限。
关节将使用力来约束它。
//设置最小链接角度为20 度
hingejoint.limits.min=20;
◆ var minBounce:float
描述:当关节碰到关节的下限时关节的弹力。
//关节反弹时的下限
hingejoint.limits.minBounce=1;
jointMotor
结构
jointMotor 用来旋转一个关节
例如:Hingejoint 可以被告知以制定的速度和力旋转。关节然后用给定的最大力试图到达这
个速度,参见:
变量
◆ var force:float
描述:动力将应用最大为force 的力以便取得targetvelocity
◆ var freeSpin:bool
描述:如果freeSpin 被启用动力将只加速而不会减速
◆ var targetvelocity:float
描述:动力将应用最大为force 的力以便取得targetvelocity
Jointspring
结构
变量
◆ var damper:float
描述:用语阻尼弹簧的阻尼力。
◆ var spring:float
描述:用于达到目标位置的弹力
◆ var targetposition:float
描述:关节试图到达的目的位置
这里一个hingehoint 目标位置是目标角度
Keyframe
结构
一个关键帧它可以插入动画的曲线
变量
◆ var in tangent:float
描述:在曲线上从下一个点到这个点时描述切线。
参加:outtangent
◆ var outtangent:float
描述:在曲线上从这个点到下一个点时描述切线。
参见:intangent
◆ var time:float
描述:关键帧时间
在一个2D 图形中,你可以把这当做x 值
参见:value
◆ var value:float
描述:该动画曲线在关键帧处的值
参见:time
构造函数
◆ static function keyframe(time:float,value:float):keyfranie
描述:创建一个关键帧
◆ static function keyframe(time:float,value:float,intangent:float,outangent:float):keyframe
描述:创建一个关键帧
layermask
结构
layermask 允许你在检视面板中显示layermask 弹出菜单
类似与camera,cullingmask。layermasks 可以选择性地过滤物体,例如当投射射线,
//使用层蒙板投射一个射线
//它可以在检视面板中修改
var mask larermask=
function Update(){
if(Physics.Raycast(transform.position, transform.forward, 100, mask.value))
{
Debug.Log(“Hit something”;
}
}
变量
◆ var valuc:vin
描述:转化层蒙板的值为一个整形值
//使用层蒙板投射一个射线
//它可以在检视面板中修改
var mask:lnyermask=-1
fonction update(){
if{physics.rayeast(transforn.position.transform.forwatd.100.mask.value))
{
Debug
}
}
类方法
◆ static function LayerToName(layer :in):string
描述:给定一个层的数字。返回内置的或在tag Maneger 中定义的层名称。
◆ static function NameToLayer(layerName :string):int
描述:给定一个层的名字。返回内置的或在tag Maneger 中定义的层索引。
◆ static implicit function LayerMask(intva1:int):layermask
描述:隐式转化一个整数位已个层蒙板
Lightmapdata

光照贴图数据
一个场景可以有多个光照贴图储存在这里,renderer 组建可以使用这些光照贴图,这就使得
它能够在多个物体上使用相同的材质,而每个物体可以使用不同的光照贴图或同一个光照贴
图的不同部分。
参见,linghrmapsettings 类renderer lightmapindex 属性
变量
◆ var lightmap:texture2D
描述:光照贴图的纹理
参见:lightmspsettings 类renderer lighunaplndex 属性
linghtmapsettings

储存这个场景的光照图
一个场景可以有多个光照贴图储存在这里,renderer 组件可以使用这些光照贴图,这就使得
它能够在多个物体上使用相同的材质,而每个物体可以使用不同的光照贴图或同一个光照贴
图的不同部分。
参见:lightmapdata 类renderer.lightmaplndex 属性
类变量
◆ sartic var lightmaps:lightmapdata[]
描述:光照贴图数组
参见:lightmapdata 类renderer.lightmaplndex 属性。
Masterserver
类,主服务器用来使服务器和客服端匹配。
你可以建立以个游戏主机或为你的游戏类型取回主机列表。这里的这个函数用来与主服务器
通信,主服务器位于不同的服务器上,如果必要这个服务器可以被定制,主服务器的概览和
技术描述:参见master server manual page
类变量
◆ static var dedicatedserver:bool
描述:申明这台机器为专用服务器。
如果作为一个服务器运行,连接数定义了玩家的数量,当在主服务器上注册的时候这个被报
告,默认情况下主服务器假定这个实例不是专用服务器,因此玩家数会增加1(占用服务器
上的一个\“chent”\)如果不希望,这个变量可以设置为假,然后知有连接数被报告为玩家数。
function startserver{}{
nerwork lnitializeserver(32.25002):
masrerserver.dedicatedserver=true;
masterserver.registerhost("myuniquegametype","johndoes game","133tgame for all");
}
◆static var ip address:string
描述:主服务器的IP 地址。
默认地这个是由unity 技术运行的服务器。
function
masterserver ip address="127.0.0.1";
master server.port=10002;
}
◆static var port:int
描述:主服务器的链接端口。
默认地这个是由unity 技术云顶的服务器,
masterserver.ipaddress="127.0.0.1";
master server.port=100021;
}
◆static var updaterate:int
描述:为主服务器主机信息更新设置最小更新速率。
通常,主机更新只在主机信息被改变的时候发生(如连接的玩家)。更新率定义了主机更新
之间的最小时间量,缺省值为60 秒(检查更新)因此,如果以个主机更新呗发送然后一些
域在10 秒后改变,然后更新可能会在50 秒之后发送(在下一次检查到改变的时候)。如果
这个被设置为0,以后就没有更新被发送,只发送初始注册信息。
function startserver()
{
network lnitialigeserver(32.25002);
//在初始化注册之后没有主机信息更新
Masterserver.updaterate=0;
masterserver,registerhost("myuniquegametype","johndoes game","133tgame forall");
}
类方法
◆static function clearhostlist():void
描述:清楚由masterserver.pollhostlist 接收到的主机列表。
如果你想更新列表并想确保你不使用较旧的数据时,使用这个,
function awakc()
{
//确保类表是空的并请求一个新的列表
masterserver clearhostlist();
masterserver.requesthostlist("myuniquegametype");
}
function lpdate()
{
//如果任何主机被接收,显示游戏名称,再次清理主机列表,}
if(masterserver.pollhostlist(),length!=0){
var hostdata;hostdata[]=masterserver.pollhostlist();
for(var i:int=0;i<hostdata.length;i++){
debug,log("game name:"+hostdata[i]gamename);
}
masterserver,clearhostlist()
}
}
◆static function pollhostlist():hostdata[]
描述:使用master server.requeshostlist 接收最新的主机列表
使用masterserver.clearhostlist 清理当前主机列表。这样你可以确定返回的列表时最新的。
function awaket(){
//确保列表时空的并请求一个新的列表
masterserver .clearhostlist();
masterserver.requesrhostlist("larustest"):
;
function update()
;
//如果任何主机被接收,显示游戏名称,再次清理主机列表;
if(masterserver.pollhostlist()length!=0){
varhostdata hostdata[]=masterserver.pollhostlist();
for(var i:int=0;i<hostdata.length;i++){
debug.log("game name"+hostdata[i].gamename);
}
masterserver.clearhostlist()
}
◆static function registerhost(gametypename:string,gamename:string.comment:string=""):void
描述:在主服务器注册这个服务器。
如果主服务器地址信息尚未改变,缺省的主服务器将被使用。
function ongui()
{
if(guilayout.button("stnrt server")){
//如果没有公有IP 地址,使用NAT 穿透
network。usenat=!network.havepublicaddrss();
network.lnitializeserver(32.25002);
masterserver.registerhost("myuniquegametype","johndoes game","133tgame for all");
}
}
◆static function RequestHosList(gameTypeName:string):void
描述:从主服务器请求一个主机列表。
当它完成的时候,这个列表可以通过MasterServer.PollHcstList 使用。
function Awakc(){
//确保列表时空的并请求一个新的列表
MastcrScrver.RequestHostList();
MastcrScrver.RequestHostList("LarusTcst");
}
function Update()
}
//如果任何主机被接收,显示游戏名称,再次清理主机列表。
if(MastcrScrvcr.PollHcstLisx().length!=0)}
var hostData:HostData[]=MasterSer.pollHostList();
for (var i:int=();i<hostData.length;i++){
Debug.Log("Game namc;"+hostData[i].gamceName);
}
MastcrScrvcr.ClearHostList();
}
}
static function UnregisterHost():void
描述:从主服务器注销这个服务器。
如果服务器没有被注销或已经被注销,不做任何事。
function OnGUt() {
if(GUILayout.Button("Disconnect")){
Nctwork,Disconnect();
NastcrServer.UnregisterHost();
}
}
MaterialPropertyBlock

应用的一块材质值。
MateriaIPropcrtyBlock 被Graphics.DrawMesh 使用。当你想用相同的材质(但有稍微有些不
同的属性)绘制多个物体时,使用这个。例如,如果你想稍微改变每个网络的颜色时。
出于性能原因,属性块只能包含有限数量的属性值。两个4x4 矩阵,六个向量颜色或12 个
浮点数可以存储在这个块中,存储空间时共享,所以存储一个矩阵留下两倍少的空间来
存储向量和浮点数。
Graphics。DrawMesh 拷贝传递的属性块,因此最有效的方法是使用它来创建一个快并为所
有DrawMesh 调用使用它。使用Clear 来清除块的值,AddFloat,AddVector,AddColot,
AddMatrix 来添加值。
参见:Graphics,DrawMesh,Matcrial。
函数
◆ function AddColor(name:string,value:Colo):void
◆ function AddColor(nameID:int,value:Colo):void
描述:添加一个颜色材质属性。
出于性能原因,属性块只能包含有限量的属性值。两个4x4 矩阵,六个向量/颜色或12 个浮
点数可以存储在这个块中。存储空间时共享,使用存储一个矩阵留下两个倍少的空间来存储
向量和浮点数。当块的存储空间填满后,额外的Add 调用将被忽略。
使用nameID 的函数变量体更快,如果你重复添加相同名称的属性,使用Shader.propertyToID
来获取不同的标示,并传递这个标示到AddColor。
◆ function AddFloat(name:string,value:float):void
◆ function AddFloat(nameID:int,value:float):void
描述:添加一个浮点材质属性。
出于性能原因,属性块只能包含有限数量的属性值。两个4x4 矩形,六个向量/颜色或存12
个浮点数可以存储在这个块中,存储空间是共享,所以存储一个矩阵留下两倍少的空间来存
储向量和浮点数。当块的存储空间填满后,额外的Add 调用将被忽略。
使用nameID 的函数变体更快,如果你重复添加相同名称的属性,使用Shader.PropertyToID
来获取不同的标示,并传递这个标示到AddFloat。
◆ function AddMatrix(name:string,value:Matrix4x4):void
◆ function AddMatrix(nameID:int,value:Matrix4x4):void
描述:添加一个矩阵材质属性。
处于性能原因,属性块只能包含有限数量的属性值。两个4x4 矩阵,六个向量/颜色或12 个
浮点数可以存储在这个块中。存储空间时共享,所以存储一个矩阵留下两倍少的空间来存储
向量和浮点数。当块的存储空间填满后,额外的Add 调用将被忽略。
使用nameID 的函数变体更快,如果你重复添加相同名称的属性,使用Shader.PropertyToID
来获取不同的标示,并传递这个标示到AddMatrix。
◆ function AddVector(name:string,value:Vector4):void
◆ function AddVector(nameID:int,value:Vector4):void
描述:添加一个向量材质属性。
出于性能原因,属性块只能包含有限数量的属性值。两个4x4 矩阵,六个向量/颜色或12 个
浮点数可以存储在这个块中。存储空间是共享,所以存储一个矩阵留下两倍少的空间来存储
向量和浮点数。当块的存储空间填满后,额外的Add 调用将被忽略。
使用nameID 的函数变体更快,如果你重复添加相同名称的属性,使用
Shader.ProrertyToLD 来获取不同的标示,并传递这个标示到AddVector。
◆ function Clear():void
描述,清除材质属性值。
GrawMesh 拷贝传递的属性块,因此最有效的方式是使用它来创建一个块并为
所有DrawMesh 调用使用它。使用Clear 来清除块的
值,ADDFloat,AddVector,AddColor,AddMatrix 来添加值.
Mathf
结构
常用数学函数的集合。
类变量
◆ static var Deg2Rad:float
描述:度到弧度的转化常量(只读)。
这个等于(PI*2)/360.
//转化30 度为弧度
var deg=30.0;
var od=dcg*Mathf.Deg2Rad;
参见:Rad2Deg 常量。
◆ static varEpsilon:float
描述:一个小的浮点数值(只读)
比较小于它的值没有多人意见,因为浮点数是不精确的。
print(MathfEpsilon);
◆ static var Infinity:float
描述:表示正无穷(只读).
◆ static var NegativeIntinity:float
描述:表示负无穷(只读).
◆ staic var PI:float
描述:3.14159265358979...值(只读).
◆ static var Rad2deg:float
描述:弧度到度的转化常量(只读).
这个等于360、(PI*2).
转化1 弧度为度
var rad=1.0;
var deg=rad*Mathf.Rad2Deg.
参见:Deg2Rad 常量
类方法
◆ staric function Abs(f:float):float
描述:返回f 的绝对值。
//打印10.5
print(Mathf.Abs(-10.5)).
◆ staric function Abs(value:int):int
描述:返回value 的绝对值。
//打印10
print(Mathf.Abs(-10));
◆ staric function Acos(f:float):float
描述:返回f 的反余弦_一个弧度角它的余弦是f.
print(Mathf.AcOS(0.5);
◆ staric function Approximately(a:float,b:float):bool
描述:比较两个浮点数值看看它们是否近似。
由于浮点数值不精确,不建议使用等操作来比较它们。例如,1.0==10.0/10.0 也许不会返回
真。
if(Mathf.Approximately(1.0,10.0/10.0))
print("same");
◆ static function Asin(f:float):float
描述:返回f 的反正弦_一个弧度角它的正弦是f.
print(Matht.Asin(0.5));
◆ staric function Atan(f:float):float
描述:返回f 的反切_一个弧度角它的正切是f.
print(Mathf.Atan(0.5));
◆ staic function Atan2(y:float,x:float):float
描述:返回一个弧度角它的Tan 为y/x。
返回的值是一个角度,该角表示x 轴和开始于零并终结在(x,y)处的向量之间的角度。
//通常使用transform.lookAt.
//但这可以给你更多的对角度的控制
vartatget:Transform;
function Update()
{
var relativ=transfom.lnverseTeansformPoint(target.position);
var angle=Mathf.Atan2(reative,reative.z)*Mathf.Rad2Deg;
transform.Rotate(0,angle,0);
}
◆ static function Ceil(f:fioat):float
描述:返回大于等于f 的最小整数.
◆ static function CeilTolnt(f:fioat):int
描述:返回大于等于f 的最小整数.
◆ static function Clamp(value:float,min:float,max:float):float
描述:在一个最小的浮点数和最大的浮点数之间截剪。
//随着时间设置变换位置
//但是不会小于1 或大于3
function Update()
{
transtorm,position.x=Mathf.Clamp(lime.time.1.0,3.0);
}
◆ staric function Clamp(value:int,min:int,max:int):int
描述:在min 和max 之间裁剪值并返回裁剪后的值。
//在1 到3 之间裁剪10,
//打印3 到控制台
prnt(Mathf.Clamp(10,1,3))
◆ static function Clamp01(value;float):float
描述:在0 和1 之间裁剪值并返回裁剪后的值。
//随着时间设置变换位置
//但是不会小于0 或大于1
function Update(){
transform.position.x=Mathf.Clamp01(Time.time);
}
◆ staic function ClosestPowerOflwo(value:int):int
描述:返回最直接的2 的幂次值。
例如。7 返回8 或者19 返回16
◆ staric function Cos(f:float):float
描述:返回弧度f 的余弦值.
print(Mathf.Cos(3));
◆ staic function EXP(power:float):float
描述:返回e 的特定次幂。
print(Mathf.Cos(6));
◆ static function Floor(f:float):float
描述:返回小于f 的最大整数.
◆ static function FloorTolnt(f:float):int
描述:返回小于f 的最大整数.
◆ static function lnverseLerp(from:float,t
  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值