◆ function GetPixel(x: int, y: int): Color
描述:返回坐标(x, y)处的像素颜色。
如果像素坐标超出边界(大于宽/高或小于0),它将给予纹理的包裹模式来限制或重复。
如果你正在从纹理中读一个大的像素块,使用GetPixels可能会更快,它将返回整个像
素颜色块。
该函数只工作在ARGB32, RGB24和Alpha8纹理格式上。对于其他格式,他总是返
回不透的白色。
//设置变换的y坐标为跟着高度图
var heightmap: Texture2D;
var size=Vector3(100, 10, 100);
function Update()
{
}
参见:GetPixels, SetPixel, GetPixelBilinear.
◆ function GetPixelBilinear(u: float, v: float): Color
描述:返回正规化坐标(u, y)处的过滤像素颜色。
坐标u和v从0.0到1.0,就像网格上的UV坐标。如果坐标超出边界(大于1小于0).
它基于纹理的包裹模式来限制或重复。
返回被双线性过滤的像素颜色。
该函数只工作在ARGB32, RGB24和Alpha8纹理格式上。对于其他格式,他总是返
回不透的白色。
参见:GetPixel.
◆ function GetPixels(miplevle: int): Color[]
描述:获取一块像素颜色。
这个函数返回纹理整个mip等级的像素颜色数组。
返回的数组被放置在2D数组中,这里,像素被从左到右,从上到下放置(行序)数
组的大小是所使用的mip等级的宽乘高。默认的mip等级是零(基本纹理)在这种情况下
大小仅为纹理的大小。一般地,mip等级尺寸是mipWidth-max(1,width>>miplecvel)高度类
似。
该函数只工作在ARGB32, RGB24和Alpha8纹理格式上。对于其他格式GetPixels被忽
略。
使用GetPixels比重复调用GetPixel更快,尤其是对于大纹理. 此外,GetPixels可以访
问单独的mipmap等级.
参见:GetPixels, mipmapCount.
◆ function GetPixels(x: int, y: int, blockWidth: int, blockHeight: int, miplevel: int): Color[]
描述:获取一块像素颜色。
这个函数是上面GetPixels函数的扩展;它不会返回整个mip等级而只是返回开始于x,y
点blockWidth乘blockHeight的区域。该块必须适合使用的mip等级。返回的数组是
blockWidth*blockHeight尺寸。
◆ function LoadImage(data: byte[]): bool
描述:从一个字节数组中加载一个图片。
这个函数从原始的字节数组中加载一个JPG和PNG图片。
//通过添加.txt扩展名刀文件来加载一个.jpg或.png文件
//并拖动它到imageTextAsset
var imageTextAsset: TextAsset;
function Start()
{
}
参见:EncodeToPNG函数.
◆ function PackTextures(textures: Textures2D[]. padding: int, maximumAtlasSize: int=
2048): Rect[]
参数
textures 纹理数组被打包到集合汇总。
padding 打包纹理的像素间距。
maximumAtlasSize 调整纹理的最大尺寸。
返回Rect[]-一个矩形数组,数组包含每个输入纹理的UV坐标集合,如果打包失败
为mull。
描述:打包多个textures到一个纹理集中。
这个函数将使用纹理集替换当前纹理。尺寸,格式和纹理是否有Mipmap可以在打包后
改变。
生成的纹理集尽可能的大以便适合所有输入的纹理,但是在没有维度上不超过
maximumAtlasSize. 如果输入的纹理不能适合纹理集合的大小,它们将被缩小。
如果所有导入的纹理是DXT1压缩格式的,纹理集也有DXT1格式. 如果所有输入纹理
被以DXT1或DXT5格式压缩,那么集合将是DXT5格式。如果任何输入的纹理是没有压
缩的,那么集合将是ARGB32来压缩格式。
如果输入的纹理没有mipmap,那么集合也将不会有mipmap。
◆ function ReadPixels(source: Rect, destX: int, destY: int, recalculateMipMaps: bool=
true: void
描述:读取屏幕像素到保存的纹理数据中。
这将从当前激活的ReaderTexture或试图(由/source/指定)拷贝一个矩形像素区域到由
destX和destY定义的位置上. 两个坐标都是用像素空间-(0,0)为左下角。
如果recalculateMipMaps被设置为真,纹理的Mip贴图也将被更新。如果
recalculateMipMaps被设置为假,你必须调用Apply重计算它们.
该函数只工作在ARGB32和RGB24纹理格式上。
参见:EncodeToPNG.
◆ function Resize(width: int, height: int, format: TextureFormat, hasMipMap: bool): bool
描述:调整纹理大小。
改变纹理的尺寸为width乘height,格式为textureFormat并有选择地创建Mip贴图.调
整大小后,纹理像素将是未定义的。这个函数非常类似与纹理构造器,除了它工作在已存
在的纹理物体上。
调用Aplly来实际上载改变后的像素到显卡。
不允许调整压缩纹理格式的大小。
◆ function Resize(width: int, height: int): bool
描述:调整纹理大小。
改变纹理的大小为width乘height。调整大小后,纹理像素将是未定义的。这个函数
非常类似与纹理构造器,除了它工作在已存在的纹理物体上。
调用Aplly来实际上载改变后的像素到显卡。
不允许调整压缩纹理格式的大小。
◆ function SetPixel(x: int, y: int, color: Color): void
描述:在坐标(x,y)处设置像素颜色。
调用Aplly来实际上载改变后的像素到显卡。上载是非常耗时的操作,因此你要在
Apply调用之间改变尽可能多的像素。
如果你需要在运行时频繁重计算一个纹理,生产一个像素颜色数组并用SetPixels一次设
置它们,这种方法要快一些。
该函数只工作在ARGN32, RGB24和Alpha8纹理格式上。对于其他格式SetPixel被
忽略。
function Start()
{
参见:SetPixels,GetPixel, Apply.
◆ function SetPixels(Colors: Color[], miplevel: int): void
描述:设置一块像素颜色。
这个函数取的并改变纹理整个mip等级的像素颜色数组调用Apply来实际上载改变
后的像素到显卡.
Colors数组被放置在2D数组中,这里,像素被从左到右,从上到下放置(行序)数组
的大小必须至少是所使用的mip等级的宽乘高。默认的mip等级是零(基本纹理)在这种
情况下大小仅为纹理的大小。一般地,mip等级尺寸是mipWidth-max(1,width>>miplecvel)
高度类似。
该函数只工作在ARGB32, RGB24和Alpha8纹理格式上。对于其他格式GetPixels被
忽略。
使用GetPixels比重复调用GetPixel更快,尤其是对于大纹理. 此外,GetPixels可以访问
单独的mipmap等级.
参见:GetPixels, Apply, mipmapCount.
//这个脚本用不同的颜色修改纹理的Mip等级
//(第一个等级为红色,第二个为绿色,第三个为蓝色),你可以使用这个来查看
//那个Mip被实际使用和如何使用.
function Start()
{
}
◆ function SetPixels(x: int, y: int, blockWidth: int, blochHeight: int, Colors: Color[],miplevel: int): void
描述:设置一块像素颜色。
这个函数是上面SetPixels函数的扩展;它不会修改整个mip等级而只是修改开始于x,y
点blockWidth乘blockHeight的区域。该colors数组必须是blockWidth*blockHeight大小,并
且可修改的块比例适应适应的Mip等级。
继承的成员
继承的变量
width 纹理的像素宽度(只读)
height 纹理像素高度(只读)
filterMode 纹理的过滤模式
anisoLevel 纹理的各向异性过滤等级
wrapMode 纹理的包裹模式(Repeat或Clamp)
mipMapBias 纹理的mipMap便宜。
name 对象的名称
hideFlages 该物体是够被隐藏,保存在场景中或被用户修改?
继承的函数
GetInstanceID 返回该物体的实例id。
继承的类函数
operator bool 这个物体存在吗?
Instantiate 克隆original物体并返回这个克隆。
Destroy 移除一个游戏物体,缓存或资源。
DestroyImmediate 立即销毁物体obj,强烈建议使用Destroy代替。
FindObjectsOfType 返回所有类型为type的激活物体。
FindObjectsOfType 返回第一个类型为type的激活物体。
operator== 比较两个物体是否相同。
operator != 比较连个物体是否不相同。
DomDestroyOnLoad 卸载场景时确保物体target不被自动销毁。
Particle
结构
参见:ParticleEmitter,Particles documentation.
变量
◆ var color: Color
描述:粒子的颜色。
颜色的Alpha通道用来淡出粒子。
参见:Particles documentation.
◆ var energy: float
描述:粒子的能量。
这是粒子生存的时间。当能量低于零时粒子将被销毁。
能量也被用于UV动画。
如果energy等于ParticleEmitter.maxEnergy第一个瓦片将被使用。
如果energy等于0最后一个瓦片将被使用。
参见:Particles documentation.
◆ var position: Vector3
描述:粒子的位置。
参见:Particles documentation.
◆ var size: float
描述:粒子的大小。
在世界空间中粒子的尺寸,以来计。
参见:Particles documentation.
◆ var velocity: Vector3
描述:粒子的速度。
如果有一个particel animator它将根据velocity移动粒子. 如果Stretch Particles被设置为
ParticleRenderMode.Stretch,这个速度也被particle render使用。
参见:Particles documentation.
Path 类
类方法
◆ static function Combine(path1: string, path2: string): string
描述:连接两个路径字符串。
如果path1没有一个有效的结束分隔符,在合并之前DirectorySeparatorChar将被追加到path1。
//Remember to import IO to make Path work.
//记得导入IO,使路径正常工作
import System.IO;
function Start ()
{
}
◆ static function GetDirectoryName(path: string): string
描述:返回指定路径字符串组件的目录名字。
此方法返回路径的字符串包含的所有字符在首个和最后一个DirectorySeparatorChar或AltDirectorySeparatorCha
import System.IO;
function Start ()
{
}
◆ static function GetExtension(path: string): string
描述:返回指定路径字符串的组件扩展名。
扩展名返回包含.字符,用于从路径的其余部分分割扩展名。
//记得导入IO,使路径正常工作 import System.IO; function Start ()
{ //打印.extension Debug.Log(Path.GetExtension("/Some/File/At/foo.extension")); }
◆ static function GetFileName(path: string): string
描述:返回指定路径字符串组件的基本文件名,不带有扩展名。简单来说就是返回一个没有扩展名的文件名。
返回值包括由GetFileName()返回的字符串,去掉扩展名分隔符和扩展名。
//记得导入IO,才能是路径正常工作 import System.IO; function Start ()
{ //打印foo.extension Debug.Log(Path.GetFileName("/Some/File/At/foo.extension")); }
◆ static function GetFileNameWithoutExtens
描述:返回指定路径字符串组件的基本文件名,不带有扩展名。简单来说就是返回一个没有扩展名的文件名。
返回值包括由GetFileName()返回的字符串,去掉扩展名分隔符和扩展名。
//记得导入IO,使Path工作
import System.IO;
function Start ()
{
}
Physics
类
全局屋里属性和辅助方法。
类变量
◆
描述:两个碰撞物体的相对速度对于这个值时将不会反弹(默认为2)。必须为正
这个值可以在Edit->Project Settings->Physics的检视面板中改变而不是通过脚本。
◆
描述:应用到场景所以刚体的重力。
重力可以通过在单体刚体上使用useGravity属性关闭。
Physics.gravity=Vector3(0,-1,0,0);
◆
描述:允许用于任何刚体的缺省最大角速度(默认为7)。必须为正
刚体的角速度最大为maxAngularVelocity以避免高速旋转物体的数值不稳定性。因为
这也许会阻止企图快速旋转的物体,例如车轮,你可以使用Rigidbody.maxAngularVelocity
逐刚体重载该值。
这个值可以在Edit->Project Settings->Physics的检视面板中改变而不是通过脚本。
Physics.maxAngularVelocity=10;
◆
描述:最小的接触渗透值,以便应用一个罚力(默认为0.05)必须为正
这个值可以在Edit->Project Settings->Physics的检视面板中改变而不是通过脚本。
Physics.minPenetrationForPenalty
◆
描述:缺省的角速度。低于该值的物体将开始休眠(默认为0.14)。必须为正
参考Rigidbody Sleeping获取更多信息。这个值可以使用Rigidbody.sleepAngularVelocity
来逐刚体重载。
这个值可以在Edit->Project Settings->Physics的检视面板中改变而不是通过脚本。
Physics.sleepAngularVelocity=0.1;
◆ static var sleepVelocity: float
描述:缺省的线性速度,低于改值的物体将开始休眠(默认为0.15)。必须为正。
参考Rigidbody Sleeping获取更多信息。则会更值可以使用Rigidbody.sleepVelocity来逐
刚体重载。
这个值可以在Edit->Project Setting->Physics的检视面板中改变而不是通过脚本
Physics.sleepVelocity=0.1;
◆ static var solverIterationCount: int
描述:允许用于任何刚体的缺省迭代数(默认为7)。必须为正。
solverIterationCount聚顶关节和接触点如何精确地计算。如果出现链接的物体震荡和行
为怪异,为solver Iteration Count设置一个较高的值将改善他们的稳定性(但是比较慢)。通
常值7可以在几乎所有的情况下工作的很好。
这个值可以在Edit->Project Settings->Physics的检视面板中改变而不是通过脚本.
Physics.solverIterationCount=10;
类方法
◆ static function CheckCapsule(start: Vector3, end: Vector3, radius: float, layermask: int=kDefaultRaycastLayers): bool
描述:如果有任何碰撞器接触到由世界坐标中的start和end构成的轴并具有radius半
径的胶囊时返回真。
◆ static function CheckSphere(position: Vector3, radius: float, layermask: int=
kDefaultRaycastLayers): bool
描述:如果有任何碰撞器接触到由世界坐标中的position和radius定义的球体时返回
真。
◆ static function IgnoreCollision(collider1: collider, collider2: collider, ignore: bool=true): void
描述:使碰撞检测系统忽略所有collider1和collider2之间的任何碰撞。
这是最有用的,如投射物不与发射他们的物体碰撞。
IgnoreCollision有一些限制:1)它不是持久的. 这个以为着当保存场景时,忽略碰撞
状态将不会存储在编辑器重。2)你只能将忽略碰撞应用到激活物体的碰撞器上. 当不激活
碰撞器或附加的刚体时,IgnoreCollision将丢失并且你必须再次调用Physics.IgnoreCollision.
//实例化一个子弹并使它忽略与这个物体的碰撞
var bulletPrefab: Transform;
function Start()
{
}
◆ static function Linecast(start : Vector3, end : Vector3, layerMask : int = kDefaultRaycastLayers) : bool
描述:如果有任何碰撞器与从start开始到end的线段相交时返回真.
如果返回真,hitInfo将包含更多关于碰撞器被碰到什么地方的信息(参考:RaycastHit).
当投射射线时,Layer mask被用来选择性的忽略碰撞器.
var target: Transform;
function Update()
{
}
当投射射线时,Layer mask被用来选择性的忽略碰撞器.
◆ static function OverlapSphere(position: Vector3, radius: float, layerMask: int=
kAllLayers): Collider[]
描述:返回触碰到的或在球体内的所有碰撞器的列表.
注意:当前这个值检查碰撞器的包围体耳不是实际的碰撞器。
◆ static function Raycast(origin: Vector3, direction: Vector3, distance: float=Mathf.Infinity,layerMask: int=kDefaultRaycastLayers): bool
参数
origin 世界坐标中射线的开始点。
direction 射线的方向。
distance 射线的长度。
layerMask 当投射射线时,layer mask被用来选择性的忽略碰撞器.
返回:布尔值-当射线碰到任何碰撞器时为真,否则为假.
描述:投射一个射线与场景中的所有碰撞器相交。
function Update()
{
}
◆ static function Raycast(origin: Vector3, direction: Vector3, out hitInfo: RaycastHit,distance: float=Mathf.Infinity, layerMask: int=kDefaultRaycastLayers): bool
参数
origin 世界坐标中射线的开始点。
direction 射线的方向。
distance 射线的长度。
hitInfo 如果返回真,hitInfo将包含更多关于碰撞器被碰到什么地方的信息(参
考: RaycaseHit).
layerMask 当投射射线时,layer mask被用来选择性的忽略碰撞器.
返回:布尔值-当射线碰到任何碰撞器时为真,否则为假.
描述:投射一个射线并碰撞场景中的所有碰撞器闭并返回碰撞的细节。
function Update()
{
}
//向上投射100米
function Update()
{
}
◆ static function Raycast(ray: Ray, distance: float=Mathf.Infinity, layerMask: int=
kDefaultRaycastLayers): bool
参数
ray 射线的开始点和方向。
distance 射线的长度。
layerMask 当投射射线时,layer mask被用来选择性的忽略碰撞器.
返回:布尔值-当射线碰到任何碰撞器时为真,否则为假.
描述:同上使用ray.origin和ray.direction而不是origin和direction.
var ray=Camera.main.ScreenPointToRay(Input.mousePosition);
if(Physics.Raycast(ray, 100))
{
}
◆ static function Raycast(ray: Ray, out hitInfo: RaycastHit, distance: float=Mathf.Infinity,layerMask: int=kDefaultRaycastLayers): bool
参数
ray 射线的开始点和方向。
distance 射线的长度。
hitInfo 如果返回真,hitInfo将包含更多关于碰撞器被碰到什么地方的信息(参
考:RaycastHit)
layerMask 当投射射线时,layer mask被用来选择性的忽略碰撞器.
返回:布尔值-当射线碰到任何碰撞器时为真,否则为假.
描述:同上使用ray.origin和ray.direction而不是origin和direction.
var ray=Camera.main.ScreenPointToRay(Input.mousePosition);
var hit: RaycastHit;
if(Physics.Raycast(ray, hit, 100))
{
}
◆ static function RaycastAll(ray: Ray, distance: float=Mathf.Infinity, layerMask: int=
kDefaultRaycastLayers): RaycastHit[]
function Update ()
{
}
◆ static function RaycastAll(origin: Vector3, direction: Vector3, distance: float=
Mathf.Infinity, layerMask: int=kDefaultRaycastLayers): RaycastHit[]
描述:投射一个穿过场景射线并返回所有的碰撞的东西。
function Update()
{
}
Ping 类
变量
◆ var ip: string
描述:ping的IP目标。
var ip="192.168.1.1";
function OnGUI()
{
}
◆ var isDone: bool
描述:ping函数已经完成?
◆ var time: int
描述:在isDone返回真厚,这个属性包含ping的时间结果。
构造函数
◆ static function Ping(address: string): Ping
描述:对提供的目标IP地址执行ping操作。
这个不执行主机名的DNS插值,所以它只接受的IP地址。
Plane 结构
表示一个平面。
平面式由一个法向量和原点到平面的距离定义的。
变量
◆ var distance: float
描述:从原点到平面的距离
构造函数
◆ staic function Plane(inNormal: Vector3, inPoint: Vector3): Plane
描述:创建一个平面
平面具有法线inNormal并通过inPoint点,inNormal不需要被规范化
◆ staic function Plane(inNormal: Vector3,d: float): Plane
描述:创建一个平面
平面具有法线inNormal和距离d,inNormal不需要被规范化
◆ staic function Plane(a: Vector3, b: Vector3, e: Vector3): Plane
描述:创建一个平面
屏幕通过给定的三个点
函数
◆ function GetDistanceToPoint(inPt: Vector3): float
描述:从平面到点的距离
◆ function GetSide(inPt: Vector3): bool
描述:一个点是否位于平面的正侧
◆ function Raycast(rayt: Ray, out enter: float): bool
描述:一个射线与平面相交
这个函数设置enter为沿着射线的距离,这个距离是它与平面相交的位置。如果这个射
线与平面平行,函数返回false并设置enter为零。
◆ function SameSide(inPt0: Vector3, inPt1: Vector3): bool
描述:两个点是否在平面的同侧
PlayerPrefsException 类,继承自Exception
这个异常时由PlayerPrefs类在web模式时抛出的,表示偏好文件超出了分配的存储空
间.
PlayerPrefs 类
在游戏会话中保持并访问玩家偏好设置。
在Mac OS X上PlayerPrefs存储在-/Library/PlayerPrefs文件夹,名文unity/[company
name]\[product name].plist,这里company和product是在Project Setting中设置的,相同
的plist用于在编辑器中运行的工程和独立模式.
在Windows独立模式下,PlayerPrefs被存储在注册表的HKCU Software[company
name]\[product name]键下,这里company和product是在Project Setting中设置的.
在Web模式,PlayerPrefs存储在Mac OS X的二进制文件
-/Library/Preferences/Unity/WebPlayerPrefs中和Windows的
%APPDATA%\Unity\WebPlayerPrefs中,一个偏好设置文件对应一个web播放器URL并且
文件大小被限制为1兆。如果超出这个限制,SetInt,SetFloat和SetString将不会存储值并相
处一个PlayerPrefsException.
类方法
◆ static function DeleteAll(): void
描述:从设置文件中移除所有键和值,谨慎的使用它们。
◆ static function DeleteKey(key: string): void
描述:从设置文件中移除key和它对应的值.
◆ static function GetFloat(key: string, defaultValue: float=OF): float
描述:返回设置文件中key对应的值,如果存在.
如果不存在,它将返回defaultValue.
print(PlayerPrefs.GetFlat("Player score"));
◆ static function GetInt(key: string, defaultValue: int): int
描述:返回设置文件中key对应的值,如果存在.
如果不存在,它将返回defaultValue.
print(PlayerPrefs.GetInt("Player score"));
◆ static function GetString(key: string, defaultValue: string=**): string
描述:返回设置文件中key对应的值,如果存在.
如果不存在,它将返回defaultValue.
print(PlayerPrefs.GetString("Player Name"));
◆ static function HasKey(key: string): bool
描述:在设置文件如果存在key则返回真.
◆ static function SetFloat(key: string, value: float): void
描述:设置由key确定的值.
print(PlayerPrefs.SetFloat("Player Score", 10.0));
◆ static function SetInt(key: string, value: int): void
描述:设置由key确定的值.
PlayerPrefs.SetInt("Player Score", 10);
◆ static function SetString(key: string, value: string): void
描述:设置由key确定的值.
PlayerPrefs.Setstring("Player Name", "Foobar");
QualitySettings 类
用于Quality Settings的 本接口.
有六个质量等级可以选择;每个等级的细节都在工程的Quality Settings中设置,在运行
的时候,当前质量等级可以使用这个类来改变。
类变量
◆ static var currentLevel: QualityLevel
描述:当前图像质量等级。
QualitySettings.currentLevel=QualityLevel.Good;
参见:QualityLevel枚举,Quality Settings.
◆ static var pixelLightCount: int
描述:影响一个物体的最大像素光源的质量。
如果有更多的光照亮该物体,最暗的一个将作为顶点光源被渲染。
如果你想更好的控制而不是使用质量设置等级,从脚本中使用这个。
//为每个物体使用最多一个像素光
QualitySettings.pixelCount=1;
参见:Quality Settings.
◆ static var softVegetation: bool
描述:使用一个双pass着色器,用于地形引擎中的植被。
如果启用,植被将有平滑的边缘,如果禁用所有植物将有硬边但是渲染会快两倍。
参见:Quality Settings.
类方法
◆ static function DecreaseLevel(): void
描述:减小当前质量等级。
QualitySettings.DecreaseLevel();
参见:IncreaseLevel, currentLevel, Quality Settings.
◆ static function IncreaseLevel(): void
描述:增加当前质量等级。
QualitySettings.IncreaseLevel();
参见:DecreaseLevel, currentLevel, Quality Settings.
Quaternion 结构
四元组用来表示旋转 它们是紧凑的,不会出现万向节锁能够很容易被插值。Unity内如使用Quaternion表示
所有旋转。
然而,它们基于复述的并不容易被理解。因此你没有必要访问或修改Quaternion组
件(x,y,z,w);最常用的应该是事业已有的旋转(例如,来自Transform)并使用它们来构造
新的旋转(例如,在两个旋转间平滑地插值).99%的时间你会使用四元组函数(其他函数仅额
外使用)Quaternion.LookRotation, Quaternion.Angle, Quaternion.Euler, Quaternion.Slerp,
Quaternion.FromToRotation, Quaternion.identity
变量
◆ var eulerAngles: Vector3
描述:返回表示旋转的欧拉角。
返回一个旋转,这个旋转绕着x轴旋转euler.x度,绕着y轴旋转euler.y度,绕着euler.z
轴旋转euler.x度。
//创建一个旋转
var rotation=Quaternion.identity;
//赋值一个旋转为绕着y轴30度;
rotation.eulerAngles=Vector3(0,30,0);
//打印沿着y轴的旋转角度
print(rotation.eulerAngles.y);
◆ var this[index: int]: float
描述:分别使用[0], [1],[2],[3]访问x,y,z,w组件。
Quaternion p;
p[3]=0.5;//与p.w=0.5相同
◆ var w: float
描述:Quaternion的W组件,不要直接修改这个,除非你了解四元组内部
◆ var x: float
描述:Quaternion的X组件,不要直接修改这个,除非你了解四元组内部
◆ var y: float
描述:Quaternion的Y组件,不要直接修改这个,除非你了解四元组内部
◆ var z: float
描述:Quaternion的Z组件,不要直接修改这个,除非你了解四元组内部
构造函数
◆ static function Quaternion(x: float, y: float, z: float, w: float): Quaternion
描述:用给定的x,y,z,w组件构造新的四元组。
函数
◆ function SetFromToRotation(fromDirection: Vector3, toDirection: Vector3): void
描述:创建一个从fromDirection到toDirection的旋转。
◆ function SetLookRotation(view: Vector3, up: Vector3=Vector3.up): void
描述:创建一个旋转,沿着forward看并且头沿着upwards向上
如果前向为零将记录一个错误。
◆ function ToAngleAxis(out angle: float, out axis: Vector3): void
描述:转化一个旋转为角度-轴表示。
//提取角度-来自变换选择的轴旋转
var angle=0.0;
var axis=Vector3.zero;
transform.rotation.ToAngleAxis(angle.axis);
◆ function ToString(): string
描述:返回格式化好的这个四元组的字符串。
print(Quaternion.identity):
类变量
◆ static var identity: Quaternion
描述:返回单位旋转(只读). 这个四元组对应与"无旋转":这个物体完全与世界或父的
轴对齐。
transform.rotation=Quaternion.identity;
类方法
◆ static function Angles(a: Quaternion, b: Quaternion): float
描述:返回两个旋转a和b之间的角度
//计算这个变换和
//target之间的角度.
var target: Transform;
function Update()
var angle=Quaternion.Angles(transform.rotation,target.rotation);
◆ static function AnglesAxis(angle: float, axis: Vector3): Quaternion
描述:创建一个旋转绕着axis轴旋转angle度。
//设置旋转绕着y轴旋转30度
transform.rotation=Quaternion.AnglesAxis(30, Vector3.up);
◆ static function Dot(a: Quaternion, b: Quaternion): float
描述:两个旋转之间的点乘。
print(Quaternion.Dot(transform.rotation, Quaternion.identity));
◆ static function Euler(x: float, y: float, z: float): Quaternion
描述:返回一个旋转,这个旋转绕着x轴旋转x度,绕着y轴旋转y度,绕着z轴旋转
z度。
//绕着y轴旋转30度
var rotation=Quaternion.Euler(0,30,0);
◆ static function Euler(euler: Vector3): Quaternion
描述:返回一个旋转,这个旋转绕着x轴旋转x度,绕着y轴旋转y度,绕着z轴旋转
z度。
//绕着y轴旋转30度
var rotation=Quaternion.Euler(Vector3(0,30,0));
◆ static function FromToRotation(fromDirection: Vector3, toDirection: Vector3):
Quaternion
描述:创建一个从fromDirection到toDirection的旋转.
通常你使用这个来旋转一个变换,这样它的一个周,例如y轴-遵循世界空间的
toDirection目标方向。
//设置旋转这样变换的y轴沿着表面的法线
transform rotation=Quaternion.FromToRotation(Vector3.up, surfaceNormal);
◆ static function Inverse(rotation: Quaternion): Quaternion)
描述:返回rotation的逆.
//设置这个变换为具有target的方向旋转
var target: Transform;
function Update()
{
transform.rotation=Quaternion.Inverse(target.rotation);
}
◆ static function Lerp(a: Quaternion, b: Quaternion, t: float): Quaternion
描述:从from到to基于t插值并规范化结果.
这个比Slerp快但是如果旋转较远看起来就较差。
//在from到to之间
//插值旋转.
//(from和to不能
//与附加脚本的物体相同)
var from: Transform;
var toL Transform;
var speed=0.1;
function Update()
{
transform.rotation=Quaternion.Lerp(from.rotation, to.rotation, Time.time*speed);
}
◆ static function LookRotation(forward: Vector3, upwards: Vector3=Vector3.up):
Quaternion
描述:创建一个旋转,沿着forward看并且沿着upwards向上
如果向前为零将记录一个错误。
//大多数时候你可以使用。
//transform.LookAt来代替
var target: Transform
function Update()
{
var relativePos=target.position-transform.position;
var rotation=Quaternion.LookRotation(relativePos);
transform.rotation=rotation;
}
◆ static operator!=(lhs: Quaternion, rhs: Quaternion): bool
描述:两个四元组不对等?
这个函数测试两个四元组的点乘是否小于1.0
注意,因为四元组最多可以表示两个全旋转(720度),这个比较可以返回true即使产
生旋转看起来一起。
◆ static operator*(lhs: Quaternion, rhs: Quaternion): Quaternion
描述:组合lhs和rhs旋转.
首先用lhs旋转一个点然后用rhs继续旋转,与使用组合旋转相同。注意旋转不可交换:
lhs*rhs不等于rhs*lhs.
//应用
//extraRotation当当前旋转
var extraRotation: Transform;
transform.rotation*=extraRotation.rotation;
◆ static operator*(rotation: Quaternion, point: Vector3): Vector3
描述:用rotation旋转点point
//沿着relativeDirection移动物体
//通常你应该使用transform.Move
var relativeDirection=Vector3.forward;
function Update() {
var absoluteDirection=transform.rotation*relativeDirection;
transform.position+=absoluteDirection*Time.deltaTime;
}
◆ static operator==(lhs: Quaternion, rhs: Quaternion): bool
描述:两个四元组相等?
这个函数测试两个四元组的点乘是否接近1.0
注意,因为四元组可以表示最大两个全旋转(720度),这个比较可以返回false即使产
生旋转看起来一起。
◆ static function Slerp(from: Quaternion, to: Quaternion, t: float): Quaternion
描述:从from到to基于t的球形插值.
//在from和to之间
//插值旋转.
//(from和to不能
//与附加脚本的物体相同)
var from: Transform;
var to: Transform;
var speed=0.1;
function Update() {
transform.rotation= Quaternion.Slerp(from.rotation, to.rotation, Time.time*speed);
}
Random
类
用于生成随机数据的类。
类变量
◆ static var insideUnitCircle: Vector2
描述:返回半径为1的圆内部的一个随机点(只读)。
//设置这个位置为一个半径为
//5, 中心在零点的圆环内部的一个点.
var newPosition: Vector2=Random.insideUnitCircle*5;
transform.position.x=newPosition.x;
transform.position.y=newPosition.y;
◆ static var insideUnitSphere: Vector3
描述:返回半径为1的球体内部的一个随机点(只读)。
//设置这个位置为一个半径为5
//中心在零点的球体内部的一个点.
transform.position=Random.insideUnitSphere*5;
◆ static var onUnitSphere: Vector3
描述:返回半径为1的球体表面上的一个随机点(只读)。
//在一个随机的方向上设置刚体速度为10.
rigidbody.velocity=Random.onUnitSphere*10;
◆ static var rotation: Quaternion
描述:返回s随机旋转(只读)。
//在世界坐标原点用一个随机旋转实例化一个预设
var prefab: GameObject;
Instantiate(prefab, Vector3.zero., Random.rotation);
◆ static var seed: int
描述:设置随机种子生成器。
◆ static var value: float
描述:返回一个0.0[包含]和1.0[包含]之间的随机数(只读).
0.0和1.0会被这个函数返回。
//打印0到1之间的值
print(Random.value);
类方法
◆ static function Range(min: float, max: float): float
描述:返回一个随机的浮点数,在min[包含]和max[包含]之间(只读).
//在x-z平面上的-10和10之间的某个位置实例化预设
var prefab: GameObject;
function Start()
{
var position=Vector3(Random Range(-10, 10), 0, Random Range(-10, 10));
Instantiate(prefab.position, Quaternion.identity);
◆ static function Range(min: int, max: int): int
描述:返回一个随机的整数,在min[包含]和max[包含]之间(只读).
如果max等于min,min将被返回,返回的值不会是max除非min等于max
//从关卡到列表中加载一个随机的关卡
Application.LoadLevel(Random Range(0, Application.levelCount));
Ray
结果
表示射线。
射线时一个无穷线段,开始于origin并沿着direction方向。
变量
◆ var direction: Vector3
描述:射线的方向。
方向总是一个规范化的向量。如果你赋值一个非单位化长度,它将被规范化。
◆ var origin: Vector3
描述:射线的起点。
构造函数
◆ static function Ray(origin: Vector3, direction: Vector3): Ray
描述:创建一个射线从origin开始沿着direction方向。
//从变换位置开始沿着变换的z轴创建一个射线
var ray=new Ray(transform.position, transform.forward);
函数
◆ static GetPoint(distance: float): Vector3
描述:返回沿着射线距离为distance单位的点。
var r: ray;
pting(r.GetPoint(10));//沿着这个射线10个单位的点
◆ function ToString(): string
描述:返回格式化好的这个射线的字符串
RaycastHit
结构
用来从一个raycase获取信息的结构。
参见:Physics.Raycast, Physics.Linecast, Physics.RaycastAll.
变量
◆ var barycentricCoordinate: Vector3
描述:所碰到的三角形的重心坐标。
这允许你沿着3个轴插值任何顶点数据。
//附加这个脚本到相机然后它将
//绘制一个从法线指出的调试直线
function Update(){
//如果碰到物体,继续
var hit: RaycastHit;
if(!Physics.Raycst(Camera.main.ScreenPointToRay(Input.mousePosition), hit))
return;
//以防万一,确保碰撞器也有一个渲染器
//材质和纹理
var meshCollider=hit.collider as MeshCollider;
if(meshCollider==null || meshCollider.sharedMesh=null)
return;
var mesh: Mesh=meshCollider.sharedMesh;
var normals=mesh.normals;
var triangles=mesh.triangles;
//取得所碰到三角形的本地法线
var n0=normals[triangles[hit.triangleIndex*3+0]];
var n1=normals[triangles[hit.triangleIndex*3+1]];
var n2=normals[triangles[hit.triangleIndex*3+1]];
//使用碰撞点的中心坐标来插值
var baryCenter=hit.barycenterCoordinate;
//使用中心坐标插值法线
var interpolatedNormal=n0*baryCenter.x+n1*baryCenter.y+n2*baryCenter.z;
//规范化插值法线
interpolatedNormal=interpolatedNormal.Normalized;
//Transform local space normals to world space
var hitTransform: Transform:=hit.collider.transform;
interpolatedNormal=hitTransform.TransformDirection(interpolatedNormal);
//用Debug.DrawLine显示
Debug.DrawRay(hit.poing, interpolatedNormal);
◆ var collider: Collider
描述:被碰到的Collider.
如果没有碰到任何东西该属性为null否则为非null参见:Physics.Raycast,
Physics.Linecast, Physics.RaycastAll.
◆ var distance: float
描述:从射线的原点到碰撞点的距离。
参见:Physics.Raycast, Physics.Linecast, Physics.RaycastAll.
◆ var normal: Vector3
描述:射线所碰到的表面的法线。
参见:Physics.Raycast, Physics.Linecast, Physics.RaycastAll.
◆ var point: Vector3
描述:在世界空间中,射线碰到碰撞器的碰撞点。
参见:Physics.Raycast, Physics.Linecast.
◆ var rigidbody: Rigidbody
描述:碰到的碰撞器的Rigidbody. 如果该碰撞器没有附加刚体那么它为null。
参见:Physics.Raycast, Physics.Linecast, Physics.RaycastAll.
◆ var textureCoord: Vector2
描述:碰撞点的UV纹理坐标。
这个可用于3D纹理绘制或绘制弹痕。如果碰撞器时非网格碰撞器,零Vector2将被返
回.
//附加这个脚本到相机,当用户点击时
//它将在3D中绘制黑色的像素. 确保你想绘制的网格附加有
//一个网格碰撞器.
function Update()
(
//只有当我们按下鼠标
if(!input.GetMouseButton(0))
return;
//只有碰到某些东西,继续
var hit: RaycastHit;
if(!Physics.Raycast(camera.ScreenPointToRay(Input.mousePosition), hit))
return;
/以防万一,还要确保碰撞器也有一个渲染器
//材质和纹理.我们也应该忽略几何体碰撞器.
var renderer: Renderer=hit.collider.renderer;
var meshCollider=hit.collider as MeshCollider;
if(renderer==null || renderer.sharedMaterial==null || renderer.sharedMaterial.mainTexture==null ||
meshCollider==null)
return;
//现在在我们碰到的物体上绘制一个像素
var tex: Texture2D=renderer.material.mainTexture;
var pixelUV=hit.textureCoord;
pixelUV.x*=tex.width;
pixelUV.y*=tex.height;
tex.SetPixel(pixelUV.x, pixelUV.y, Color.black);
tex.Apply();
}
参见:Physics.Raycast, Physics.Linecast, Physics.RaycastAll.
◆ var textureCoord2: Vector2
描述:碰撞点的第二个UV纹理坐标。
这个可用于3D纹理绘制或绘制弹痕。如果碰撞器时非网格碰撞器,零Vector2.zero将被
返回.如果网格没有包含第二个uv集,主uv集将被返回。
//附加这个脚本到相机,当用户点击时
//它将在3D中绘制黑色的像素. 确保你想绘制的网格附加有
//一个网格碰撞器.
function Update()
(
//只有当我们按下鼠标
if(!input.GetMouseButton(0))
return;
//只有碰到某些东西,继续
var hit: RaycastHit;
if(!Physics.Raycast(camera.ScreenPointToRay(Input.mousePosition), hit))
return;
/以防万一,还要确保碰撞器也有一个渲染器
//材质和纹理.我们也应该忽略几何体碰撞器.
var renderer: Renderer=hit.collider.renderer;
var meshCollider=hit.collider as MeshCollider;
if(renderer==null || renderer.sharedMaterial==null || renderer.sharedMaterial.mainTexture==null ||
meshCollider==null)
return;
//现在在我们碰到的物体上绘制一个像素
var tex: Texture2D=renderer.material.mainTexture;
var pixelUV=hit.textureCoord2;
pixelUV.x*=tex.width;
pixelUV.y*=tex.height;
tex.SetPixel(pixelUV.x, pixelUV.y, Color.black);
tex.Apply();
}
参见:Physics.Raycast, Physics.Linecast, Physics.RaycastAll.
◆ var triangleIndex: int
描述:碰到的三角形的索引.
如果被击中的碰撞器时一个MeshCollider三角形索引才可用.
//附加这个脚本到相机然后它将
//绘制一个调试直线三角形
//在我们放置鼠标的三角形上
function Update()
(
//如果我们击中了某物,继续
var hit: RaycastHit;
if(!Physics.Raycast(camera.ScreenPointToRay(Input.mousePosition), hit))
return;
/以防万一,确保碰撞器也有一个渲染器
//材质和纹理
var meshCollider=hit.collider as MeshCollider;
if(meshCollider==null ||meshCollider.sharedMesh==null)
return;
var mesh: Mesh=meshCollider.sharedMesh;
var vertices=mesh.vertices;
var triangles=mesh.triangles;
//取回碰到的本地坐标点
var p0=vertices[triangles[hit.triangleIndex*3+0]];
var p1=vertices[triangles[hit.triangleIndex*3+1]];
var p2=vertices[triangles[hit.triangleIndex*3+1]];
//交换本地空间点到世界空间
var hitTransform: transform=hit.collider.transform;
p0=hitTransform.TransformPoint(p0);
p1=hitTransform.TransformPoint(p1);
p2=hitTransform.TransformPoint(p2);
//用Debug.DrawLine显示
Debug.DrawLine(p0, p1);
Debug.DrawLine(p1, p2);
Debug.DrawLine(p2, p0);
}
参见:Physics.Raycast, Physics.Linecast, Physics.RaycastAll.
RectOffset
类
用于矩形,边界等的偏移。
被GUIStyle用在所有地反。
变量
◆ var bottom: int
描述:底部边缘的尺寸。
◆ var horizontal: int
描述:left+right的快捷方式(只读)。
◆ var left: int
描述:左边边缘的尺寸。
◆ var right: int
描述:右边边缘的尺寸。
◆ var top: int
描述:顶部边缘的尺寸。
◆ var vertical: int
描述:top+bottom的快捷方式(只读)
函数
◆ function Add(rect: Rect): Rect
描述:向一个rect中添加边界偏移。
◆ function Remove(rect: Rect): Rect
描述:从一个rect中移除边界偏移。
Rect
结构
由x,y位置和width,height定义的2D矩阵
Rect结构主要用于2D操作;UnityGUI系统广泛的使用它,也可用来在屏幕上定位相机
参见:GUIScripting.Guide, Camera.rect, Camera.pixelRect.
变量
◆ var height: float
描述:矩形的高。
var rect=Rect(0,0,10,10);
print(rect.height);
rect.height=20;
◆ var width: float
描述:矩形的宽。
var rect=Rect(0,0,10,10);
print(rect.width);
rect.width=20;
◆ var x: float
描述:矩形的左侧坐标。
◆ var xMax: float
描述:矩形的右侧坐标
改变这个值将保持矩形的左边(这样宽度也将改变)
◆ var xMin: float
描述:矩形的左侧坐标
改变这个值将保持矩形的右边(这样宽度也将改变)
◆ var y: float
描述:矩形的顶部坐标。
var rect=Rect(10,10,100,100);
print(rect.y);
rect.x=20;
◆ var yMax: float
描述:矩形的底部坐标。
改变这个将保持矩形的顶边(这样高度也将改变)
◆ var yMin: float
描述:矩形的顶部坐标。
改变这个将保持矩形的底边(这样高度也将改变)
构造函数
◆ static function Rect(left: float, top: float, width: float, height: float): Rect
描述:创建一个新的矩形
var rect=Rect(0,0,10,10);
函数
◆ function Contains(point: Vector2): bool
◆ function Contains(point: Vector3): bool
描述:如果point的x和y位于矩阵的内部
//当坐标???
function Update()
{
var rect=Rect(0,0,150,150);
if(rect Contains(Input.???Position))
print("Inside")
}
◆ function ToString(): string
描述:返回格式化好的Rect字符串、
var rect=Rect(0,0,10,10);
print(rect);
类方法
◆ static function MinMaxRect(left: float, top: float, right: float, bottom: float): Rect
描述:根据min/max坐标值创建一个矩形。
◆ static operator!=(lhs: Rect, rhs: Rect): bool
描述:如果矩形不相同返回真。
◆ static operator==(lhs: Rect, rhs: Rect): bool
描述:如果矩形相同返回真。
RenderSettings
类
Render Settings包含用于场景中可视元素范围的缺省值,如雾和环境光。
参见:Render Settings manager
类变量
◆ static var ambientLight: Color
变量
◆
描述: 解析度的像素高度。
◆
描述: 解析度的像素宽度。
◆
描述: 解析度的垂直刷新率 Hz。
Resources
类
Resources类允许你按照它们的路径名找到并加载物体。
所有位于Assets文件夹下名“Resources”的文件夹中的资源,都可以Resources.Load
函数访问,
在Unity中你通常不需要使用路径名来访问资源,相反你可以通过声明一个成员变量
来公开到一个资源的应用,然后在检视面板中给它赋值。使用这个技巧的时候Unity可以在构建的时候自动计算哪个资源被使用。这从根本上最大限度地减少了实际用于游戏的资源的尺寸。当你放置资源在“Resources”文件夹中时这个不会这么做,因此所有在“Resources”文件夹中的资源都将被包含在游戏中。
另一个使用路径名的缺点是,缺乏可重用性,因为脚本对于使用的资源具有硬编码要求。另一方面使用公开在检视面板中的引用,是自文档化的,对于使用你脚本的用户来说也是显而易见的。
然而,有些情况下按照名称而不是在检视面板中取回一个资源是更方便的。尤其是当在检视面板中赋值引用是不方便的时候。例如你或许想从脚本创建一个游戏物体,为程序生成的网格赋值一个纹理。
var go = new GameObject.CreatePrimitive(PrimitiveType.Plane);
go.renderer.marerial.mainTexture = Resources.Load("glass");
类方法
◆
描述: 加载储存在Resources文件夹中的path处的资源。
如果在path处发现这个资源返回它,否则返回null。Path相对于Resources文件夹,扩展名必须被忽略。Resources文件夹可以在Assets文件夹中的任何位置。
//附加一个名为"Assets/Resources/glass"的纹理到Plane.
function Start() {
}
//实例化路径"Assets/Resources/enemy"处的一个预设
function Start () {
var instance : GameObject = Instantiate(Resources.Load("enemy"));
}
◆
描述: 加载储存在Resources文件夹中path处的资源。
如果在path处发现这个资源就返回它,否则返回null。只有type类型的物体将被返回. Path相对于Resources文件夹,扩展名必须被忽略。Resouces文件夹可以在Assets文件夹中的任何位置。
//附加一个名为”glass”的纹理到Plane
function Start () {
}
//实例化名为”Resources/enemy”的一个预设
function Start () {
}
◆
描述: 加载Resources文件夹中的path文件夹或者文件中的所有资源。
如果path是一个文件夹,文件中的所有资源都将被返回。如果path为一个文件,只有这个资源将被返回。只有type类型的物体将被返回。Path相对于Resources文件夹。Resources文件夹可以在Assets文件夹中的任何位置。
◆
描述: 加载Resources文件夹中的path文件夹或者文件中的所有资源。
如果path是一个文件夹,文件中的所有资源都将被返回。如果path为一个文件,只有这个资源将被返回。只有type类型的物体将被返回。Path相对于Resources文件夹。Resources文件夹可以在Assets文件夹中的任何位置。
◆
描述: 返回资源路径上的一个资源(只在编辑器中)。
在独立版或者web版中这个函数总是返回null。这个可以用来快速访问一个在编辑器中使用的资源。
var prefab : GameObject;
function Start () {
prefab = Resources.LoadAssetAtPath(“Assets/Artwork/mymodel.fbx”, GameObject);
}
Screen
类变量
◆
描述: 当前屏幕的解析度。
如果播放器运行在窗口模式,这将返回当前左面的解析度。
print(Screen.currentResolution);
◆
描述: 游戏是否运行在全屏模式下?
通过改变这个属性来切换全屏模式。
//切换全屏
Screen.fullScreen = !Screen.fullScreen;
参见: SetResolution。
◆
描述: 屏幕窗口的当前像素高度(只读)。
播放窗体的实际高度(在全屏模式下也是当前的分辨率高度)
◆
描述: 光标是否被锁定?
//当鼠标被锁定时调用
function DidLockCursor () {
}
//当光标被解锁时调用
//或被脚本调用Screen.lockCursor = false;
Function DidUnlockCursor () {
}
function OnMouseDown () {
}
private var wasLocked = false;
function Update () {
//或者因为一些脚本设置Screen.lockCursor = false;
If(!Screen.lockCursor && wasLocked) {
}
//再次获得光标锁定?
else if(Screen.lockCursor && wasLocked) {
}
}
◆
var resolutions : Resolutions[] = Screen.resolutions;
//打印解析度
for(var res in resolutions) {
}
//切换到支持的最低全屏解析度
Screen.SetResolution(resolutions[0].width, resolutions[0].height, true);
◆
//隐藏光标
Screen.showCursor = false;
◆
描述: 屏幕窗口的当前像素宽度(只读)。
播放窗体的实际宽度(在全屏模式下也是当前的分辨率宽度)
类方法
◆
//切换成640 x 480 全屏模式 60hz
//切换成800 x 600 窗口模式
SoftJointLimit
变量
◆
◆
◆
◆
String
表示一系列Unicode字符文本。
变量
◆
◆
SystemInfo
类
类变量
◆
//打印”ATi Raedon X1600 OpenGL Engine”在MacBook Pro OS X 10.4.8上
print(SystemInfo.graphicsDeviceName);
◆
//打印”ATi Technologies Inc.” 在MacBook Pro OS X 10.4.8上
print(SystemInfo.graphicsDeviceVendor);
◆
//打印”OpenGL 2.0[2.0 ATi-1.4.40]”在MacBook Pro OS X 10.4.8下。
//打印”Direct3D 9.0c[atiumdag.dll 7.14 10.471]”在MacBook Pro/ Windows Vista下。
print(SystemInfo.graphicsDeviceVersion);
◆
这个是以兆(MB)计算的显存容量。
◆
◆
◆
类方法
◆
Time
类变量
◆
◆
function Update () {
}
◆
◆
◆
//确保RecaloulateValue在每帧中只执行一次某些操作
◆
//打印从开始到现在的真实时间
//一个FPS计数器,在每个updateInterval间隔处计算帧/秒,这样显示就不会随意的改变。
var updateInterval = 0.5;
private var last
private var frames = 0;//超过当前间隔帧
//显示两位小数
function Update () {
◆
◆
//如果 Fire1按钮(默认为Ctrl)被按下,每0.5秒实例化一个projectile。
◆
//当用户按下Fire1按钮时可以在1和0.7之间切换时间。
Time.timeScale = 0.7;
Time.timeScale = 1.0;
◆
//设置GUI文本为玩家完成该关卡的时间。
Vector2
变量
◆
◆
◆
Vector2 p;
◆
◆
构造函数
◆
函数
◆
类变量
◆
◆
◆
类方法
◆
◆
◆
◆
// 使向量变为二倍长; 打印(2.0, 4.0)
◆
◆
◆
◆
◆
◆
◆
◆
Vector3
结构
变量
◆
◆
◆
print(“The other transform is close to me!”);
}
◆
◆ var x : float
◆ var y : float
◆
构造函数
◆
◆
函数
◆
◆
◆
◆
类变量
◆
◆
◆
◆
◆
类方法
◆
◆
◆
Vector3.Distance(a, b)与(a – b).magnitude相同。
◆
print(“The other transform is behind me!”);
◆
◆
◆
var a = Vector3(1,2,3);
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
}
◆
◆
◆
◆
Vector4
变量
◆
◆
◆
◆
◆
◆
◆
◆
构造函数
◆
◆
◆
函数
◆
◆
◆
◆
类变量
◆
◆
类方法
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆
◆