Unity API - C

废话不多说,一针见血,go!

一起来看 API

    • Caching 缓存
    • Camera 摄像机
    • CapsuleCollider 胶囊碰撞器
    • CharacterController 角色控制器
    • CharacterJoint 角色关节
    • Cloth 布料
    • ClothRenderer 布料渲染器
    • ClothSkinningCoefficient 布料蒙皮系数
    • Collider 碰撞器
    • Collision 碰撞
    • Color 颜色
    • CombineInstance 合并实例

Caching 缓存

Caching.Authorize 授权

授权这个Unity内容使用缓存

Caching.CleanCache 清除缓存

删除这个内容相关的缓存文件夹

当你已经有一个缓存许可证时,这个函数才能激活

Caching.Authorize (name, domain, size, signature);
    if (GUILayout.Button("Uninstall Game"))
        Caching.CleanCache ();

Caching.enabled 启用

缓存是否启用?

if (!Caching.enabled)
    GUILayout.Label ("Please turn on caching to run this game.");

Caching.expirationDelay 截止延迟(啥?)

Caching 缓存

Caching类让你管理资源包缓存,下载使用

Caching.IsVersionCached 是否缓存的版本

检查,如果一个资源包被缓存

if (Caching.IsVersionCached("http://myserver.com/bla.unity3d", 3))
    GUILayout.Button("Load Level");

Caching.ready 准备

Caching.spaceFree 剩余空间

可用的磁盘空间,以bytes(字节)为单位

Caching.spaceOccupied 占用空间

已经使用的磁盘空间,以bytes(字节)为单位

Camera 摄像机

Camera.actualRenderingPath 实际渲染路径

实际使用的渲染路径

Camera.allCameras 所有相机

返回场景中所有启用的相机

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    public int count = Camera.allCameras.Length;
    public void Awake()
    {
        print("We‘ve got " + count + " cameras");
    }
}

Camera.aspect 宽长比

宽长比(宽度除以高度)

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    public void Awake()
    {
    if (camera.aspect > 1.0F)
        print("Screen is more wide than tall!");
    else
        print("Screen is more tall than wide!");
    }
}

Camera.backgroundColor 背景颜色

屏幕将被清理为这个颜色

来回变化背景颜色

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    public Color color1 = Color.red;
    public Color color2 = Color.blue;
    public float duration = 3.0F;
    void Update()
    {   //设置消除标识到颜色
        float t = Mathf.PingPong(Time.time, duration) / duration;
        camera.backgroundColor = Color.Lerp(color1, color2, t);
    }
    public void Awake()
    {
        camera.clearFlags = CameraClearFlags.SolidColor;
    }
}

Camera.cameraToWorldMatrix 相机转世界矩阵

从相机空间到世界空间的变换矩阵

在屏幕视图绘制一个黄色的球,以Distance单位,沿着相机所看方向

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    public float distance = -1.0F;
    void OnDrawGizmosSelected()
    {
        Matrix4x4 m = camera.cameraToWorldMatrix;
        Vector3 p = m.MultiplyPoint(new Vector3(0, 0, distance));
        Gizmos.color = Color.yellow;
        Gizmos.DrawSphere(p, 0.2F);
    }
}

Camera.clearFlags 清除标识

相机如何清除背景

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    public void Awake()
    {   //用背景颜色清除(忽略天空盒)
        camera.clearFlags = CameraClearFlags.SolidColor;
    }
}

Camera.CopyFrom 复制到

使这个相机的设置与其他相机相同

Camera.cullingMask 消隐遮罩

这个用来选择性的渲染部分场景

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    public void Awake()
    {   //只渲染在第一层中的物体(默认层)
        camera.cullingMask = 1 << 0;// 1/1
    }
}

Camera.current 当前相机

当前用于渲染的相机,只用于低级的渲染控制

Camera.depth 深度

相机在渲染顺序上的深度

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    public void Awake()
    {   //设置这个相机在主相机之后渲染
        camera.depth = Camera.main.depth + 1;
    }
}

Camera.depthTextureMode 深度纹理模式

相机生成怎样的一个深度纹理

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    public void Awake()
    {   //生成一个深度+法线纹理
        camera.depthTextureMode = DepthTextureMode.DepthNormals;
    }
}

Camera.farClipPlane 远裁剪平面

远裁剪面的距离(啥玩意)

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    public void Awake()
    {
        camera.farClipPlane = 100.0F;
    }
}

Camera.fieldOfView 固定视野

相机的视野,以度为单位

例一

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    public void Awake()
    {   //设置附加到同一个游戏物体上相机的视野为60
        camera.fieldOfView = 60;
    }
}

例二

使用专门主相机

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    public void Awake()
    {   //设置主相机的视野为 80
        Camera.main.fieldOfView = 80;
    }
}

Camera 摄像机

Camera是一个设备,玩家通过它看世界

Camera.layerCullDistances 层消隐距离

每层的消隐距离(不懂)

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    void Start()
    {
        float[] distances = new float[32];
        //设置层10的消隐为15米距离,其他所有层使用远剪裁屏幕距离
        distances[10] = 15;
        camera.layerCullDistances = distances;
    }
}

Camera.main 主相机

第一个启用的被标记为“MainCanmera”的相机

Camera.nearClipPlane 近裁剪平面

近裁剪面的距离

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    public void Awake()
    {
        camera.nearClipPlane = 0.1F;
    }
}

Camera.OnPostRender 在渲染之后

OnPostRender 在相机渲染场景之后调用

这个脚本让你在每个相机开启/禁用雾效

在检视面板开启或禁用这个脚本

在每个相机可以开启/禁用雾效

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    private bool revertFogState = false;
    void OnPreRender()
    {
        revertFogState = RenderSettings.fog;
        RenderSettings.fog = enabled;
    }
    void OnPostRender()
    {
        RenderSettings.fog = revertFogState;
    }
}

Camera.OnPreCull 在消隐之前

OnPreCull在相机开始裁剪场景之前调用

附加这个到相机

反转相机中的物体,因此每个被渲染的物体是反的(?)

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    void OnPreCull()
    {
        camera.ResetWorldToCameraMatrix();
        camera.ResetProjectionMatrix();
        camera.projectionMatrix = camera.projectionMatrix * Matrix4x4.Scale(new Vector3(1, -1, 1));
    }
    void OnPreRender()
    {   //设置为true,因此可以看到翻转的物体
        GL.SetRevertBackfacing(true);
    }
    void OnPostRender()
    {   //设置为false,因为不想影响所有其他相机
        GL.SetRevertBackfacing(false);
    }
}

Camera.OnPreRender 在渲染之前

OnPreRender在相机开始渲染场景之前调用

这个脚本让你在每个相机开启/禁用雾效

在检视面板开启或禁用这个脚本

在每个相机可以开启/禁用雾效

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    private bool revertFogState = false;
    void OnPreRender()
    {
        revertFogState = RenderSettings.fog;
        RenderSettings.fog = enabled;
    }
    void OnPostRender()
    {
        RenderSettings.fog = revertFogState;
    }
}

Camera.OnRenderImage 在渲染图像之后

OnRenderImage在所有渲染完成后被调用,来渲染图片的后期处理效果

Camera.OnRenderObject 在渲染物体之后

OnRenderObject 被用来渲染你自己的物体,使用或者其他函数

Camera.OnWillRenderObject 在渲染物体之前

如果物体可见,每个相机都会调用OnWillRenderObject

增加otherObject的大小同时这个变换正在渲染

注意这个将被调用即使场景编辑器显示这个物体

因此,请确保在游戏视图看不到的物体,不在场景编辑器

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    public GameObject otherObject;
    void OnWillRenderObject()
    {
        otherObject.transform.localScale *= 1.0001F;
    }
}

Camera.orthographic 正交

相机是正交的(true),是透视的(false)?

例一

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    public void Awake()
    {   //设置相机为正交
        camera.orthographic = true;
    }
}

例二

用于专门的主相机

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    public void Awake()
    {   //设置主相机为正交
        Camera.main.orthographic = true;
    }
}

Camera.orthographicSize 正交大小

在正交模式下相机的一半尺寸

例一

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    public void Awake()
    {   //设置相机的正交尺寸为5
        camera.orthographic = true;
        camera.orthographicSize = 5;
    }
}

例二

使用专门的主相机

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    public void Awake()
    {   //设置主相机的正交尺寸为5
        Camera.main.orthographic = true;
        Camera.main.orthographicSize = 5;
    }
}

Camera.pixelHeight 相机高度

相机有多高,以像素单位

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    public void Awake()
    {
        print("Camera is " + camera.pixelWidth + " pixels wide");
    }
}

Camera.pixelRect 像素矩形

相机被渲染到屏幕像素中的位置

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
void Update()
{
      Rect r = camera.pixelRect;
      print("Camera displays from " + r.xMin + " to " + r.xMax + " pixel");
}
}

Camera.pixelWidth 相机宽度

相机有多宽,以像素单位

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    public void Awake()
    {
        print("Camera is " + camera.pixelWidth + " pixels wide");
    }
}

Camera.projectionMatrix 投影矩阵

设置自定义的投影矩阵

例一

让相机以流行的方式晃动

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    public Matrix4x4 originalProjection;
    void Update()
    {
        Matrix4x4 p = originalProjection;
        //改变原始矩阵的某些值
        p.m01 += Mathf.Sin(Time.time * 1.2F) * 0.1F;
        p.m10 += Mathf.Sin(Time.time * 1.5F) * 0.1F;
        camera.projectionMatrix = p;
    }
    public void Awake()
    {
        originalProjection = camera.projectionMatrix;
    }
}

例二

设置一个偏移中心的投影,这个透视的消失点没有必要在屏幕的中心

定义近载面大小,例如相机的近裁面偏移中心多少

改变这个值你就能看到相机视图的变化

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    public float left = -0.2F;
    public float right = 0.2F;
    public float top = 0.2F;
    public float bottom = -0.2F;
    void LateUpdate()
    {
        Camera cam = camera;
        Matrix4x4 m = PerspectiveOffCenter(left, right, bottom, top, cam.nearClipPlane, cam.farClipPlane);
        cam.projectionMatrix = m;
    }
    static Matrix4x4 PerspectiveOffCenter(float left, float right, float bottom, float top, float near, float far) {
        float x = 2.0F * near / right - left;
        float y = 2.0F * near / top - bottom;
        float a = right + left / right - left;
        float b = top + bottom / top - bottom;
        float c = -far + near / far - near;
        float d = -2.0F * far * near / far - near;
        float e = -1.0F;
        Matrix4x4 m;
        m[0, 0] = x;
        m[0, 1] = 0;
        m[0, 2] = a;
        m[0, 3] = 0;
        m[1, 0] = 0;
        m[1, 1] = y;
        m[1, 2] = b;
        m[1, 3] = 0;
        m[2, 0] = 0;
        m[2, 1] = 0;
        m[2, 2] = c;
        m[2, 3] = d;
        m[3, 0] = 0;
        m[3, 1] = 0;
        m[3, 2] = e;
        m[3, 3] = 0;
        return m;
    }
}

Camera.rect 矩形

相继被渲染到屏幕规范化坐标中的位置

Rect的范围总0(左/下)到1(右/上)

//每次按下空格键时改变视口宽度
function Update ()
{
    if (Input.GetButtonDown ("Jump"))
    {
        //随机选择边缘
        var margin = Random.Range (0.0, 0.3);
        //设置矩形
        camera.rect = Rect (margin, 0, 1 - margin * 2, 1);
    }
}

Camera.Render 渲染

手动渲染相机

Camera.renderingPath 渲染路径

渲染路径

Camera.RenderToCubemap 渲染到立方图

从这个相机渲染到一个立方贴图(不懂)

例一

//从给定的点渲染香精到以静态立方贴图
//放置这个脚本到工程的Editor文件夹中
//然后用一个Reflective shaders 来使用这个立方贴图
class RenderCubemapWizard extends ScriptableWizard
{
    var renderFromPosition : Transform;
    var cubemap : Cubemap;

    function OnWizardUpdate ()
    {
        helpString = "Select transform to render from and cubemap to render into";
        isValid = (renderFromPosition != null) && (cubemap != null);
    }

    function OnWizardCreate ()
    {
        //为渲染创建临时相机
        var go = new GameObject( "CubemapCamera", Camera );
        //放置它到物体上
        go.transform.position = renderFromPosition.position;
        go.transform.rotation = Quaternion.identity;

        //渲染到立方贴图
        go.camera.RenderToCubemap( cubemap );

        //销毁临时相机
        DestroyImmediate( go );
    }

    @MenuItem("GameObject/Render into Cubemap")
    static function RenderCubemap ()
    {
        ScriptableWizard.DisplayWizard.<RenderCubemapWizard>(
        "Render cubemap", "Render!");
    }
}

例二

//附加这个脚本到使用了Reflective shader的物体上
//实时反射立方贴图
@script ExecuteInEditMode

var cubemapSize = 128;
var oneFacePerFrame = false;
private var cam : Camera;
private var rtex : RenderTexture;

function Start ()
{
    //在启动时渲染所有六个面
    UpdateCubemap( 63 );
}

function LateUpdate ()
{
    if (oneFacePerFrame)
    {
        var faceToRender = Time.frameCount % 6;
        var faceMask = 1 << faceToRender;
        UpdateCubemap (faceMask);
    }
    else
    {
        UpdateCubemap (63); //所有六个面
    }
}

function UpdateCubemap (faceMask : int)
{
    if (!cam)
    {
        var go = new GameObject ("CubemapCamera", Camera);
        go.hideFlags = HideFlags.HideAndDontSave;
        go.transform.position = transform.position;
        go.transform.rotation = Quaternion.identity;
        cam = go.camera;
        cam.farClipPlane = 100; //不要渲染较远的部分
        cam.enabled = false;
    }

    if (!rtex)
    {
        rtex = new RenderTexture (cubemapSize, cubemapSize, 16);
        rtex.isPowerOfTwo = true;
        rtex.isCubemap = true;
        rtex.hideFlags = HideFlags.HideAndDontSave;
        renderer.sharedMaterial.SetTexture ("_Cube", rtex);
    }

    cam.transform.position = transform.position;
    cam.RenderToCubemap (rtex, faceMask);
}

function OnDisable ()
{
    DestroyImmediate (cam);
    DestroyImmediate (rtex);
}

Camera.RenderWithShader 用Shader渲染

用shader替代渲染相机

Camera.ResetAspect 重设长宽比

恢复长宽比为屏幕的长宽比

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    public void Awake()
    {
        camera.ResetAspect();
    }
}

Camera.ResetProjectionMatrix 重设投影矩阵

让投影反映正常的相机参数(?)

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    public void Awake()
    {
        camera.ResetProjectionMatrix();
    }
}

Camera.ResetReplacementShader 重设替换Shader

从相机上移除shader替换(what?)

Camera.ResetWorldToCameraMatrix 重设世界转相机矩阵

在场景中让渲染位置反映相机的位置

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    public void Awake()
    {
        camera.ResetWorldToCameraMatrix();
    }
}

Camera.ScreenPointToRay 屏幕位置转射线

返回一条射线从摄像机通过一个屏幕点

打印相机直接看到物体名称

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    void Update()
    {   //获取穿过屏幕中心的射线
        Ray ray = camera.ViewportPointToRay(new Vector3(0.5F, 0.5F, 0));
        //投射
        RaycastHit hit;
        if (Physics.Raycast(ray, ref hit))
            print("I‘m looking at " + hit.transform.name);
        else
            print("I‘m looking at nothing!");
    }
}

Camera.ScreenToViewportPoint 屏幕转视窗位置

从屏幕空间到视窗空间的变换位置

Camera.ScreenToWorldPoint 屏幕转世界位置

从屏幕空间到世界空间的变化位置

在所选相机的近裁剪面上,绘制一个黄色的球,在左下100像素的位置

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    void OnDrawGizmosSelected()
    {
        Vector3 p = camera.ScreenToWorldPoint(new Vector3(100, 100, camera.nearClipPlane));
        Gizmos.color = Color.yellow;
        Gizmos.DrawSphere(p, 0.1F);
    }
}

Camera.SetReplacementShader 设置替换Shader

使相机渲染用shader替换

Camera.targetTexture 目标纹理

渲染纹理的目标

Camera.velocity 速度

获取世界空间中相机的速度

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    void Update()
    {
        print("Camera moving at " + camera.velocity.magnitude + " m/s");
    }
}

Camera.ViewportPointToRay 视窗位置转射线

返回从相机出发穿过视点的一个射线

打印相机直接看到物体名称

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    void Update()
    {   //获取穿过屏幕中心的射线
        Ray ray = camera.ViewportPointToRay(new Vector3(0.5F, 0.5F, 0));
        //投射
        RaycastHit hit;
        if (Physics.Raycast(ray, ref hit))
            print("I‘m looking at " + hit.transform.name);
        else
            print("I‘m looking at nothing!");
    }
}

Camera.ViewportToScreenPoint 视窗转屏幕位置

从视口空间到屏幕空间的变换位置

Camera.ViewportToWorldPoint 视窗转世界位置

从视窗空间到世界空间的变换位置

在近裁剪面的右上角绘制一个黄色的球,针对在场景视图中选中的相机

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    void OnDrawGizmosSelected()
    {
        Vector3 p = camera.ViewportToWorldPoint(new Vector3(1, 1, camera.nearClipPlane));
        Gizmos.color = Color.yellow;
        Gizmos.DrawSphere(p, 0.1F);
    }
}

Camera.worldToCameraMatrix 世界转相机矩阵

从世界到相机空间的变换矩阵

从Offsets位置偏移相机的渲染

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    public Vector3 offset = new Vector3(0, 1, 0);
        void LateUpdate()
        {//构建一个沿着Z轴偏移和镜像的矩阵,因为相机已经为Z轴镜像,并用于其余部分
        Vector3 camoffset = new Vector3(-offset.x, -offset.y, offset.z);
        Matrix4x4 m = Matrix4x4.TRS(camoffset, Quaternion.identity, new Vector3(1, 1, -1));
        //重载worldToCameraMatrix为偏移/镜像的变换矩阵
        camera.worldToCameraMatrix = m * transform.worldToLocalMatrix;
    }
}

Camera.WorldToScreenPoint 世界转屏幕位置

从世界空间到屏幕空间变换位置

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    public Transform target;
    void Update()
    {
        Vector3 screenPos = camera.WorldToScreenPoint(target.position);
        print("target is " + screenPos.x + " pixels from the left");
    }
}

Camera.WorldToViewportPoint 世界转视窗位置

从世界空间到视窗空间的变换位置

Target在屏幕的左边还是右边

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    public Transform target;
    void Update()
    {
        Vector3 viewPos = camera.WorldToViewportPoint(target.position);
        //视口坐标范围从0到1
        if (viewPos.x > 0.5F)
            print("target is on the right side!");
        else
            print("target is on the left side!");
    }
}

CapsuleCollider 胶囊碰撞器

CapsuleCollider.center 中心

胶囊的中心,基于物体的自身坐标空间

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    public void Awake()
    {   //重设中心点到变换的位置
        collider.center = Vector3.zero;
    }
}

CapsuleCollider.direction 方向

胶囊的方向

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    public void Awake()
    {   //使胶囊的高度沿着x轴
        collider.direction = 0;
    }
}

CapsuleCollider.height 高度

胶囊的高度,基于物体的自身空间

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    public void Awake()
    {
        collider.height = 5;
    }
}

CapsuleCollider 胶囊碰撞器

一个胶囊形状的基本碰撞器

CapsuleCollider.radius 半径

球体的半径,基于物体的自身坐标

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    public void Awake()
    {
        collider.radius = 1;
    }
}

CharacterController 角色控制器

CharacterController.center 中心

相对于变换位置的角色胶囊体的中心

将胶囊体的中心向上移动

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    public CharacterController controller;
    public void Awake()
    {
        controller = GetComponent<CharacterController>();
        controller.center = new Vector3(0, 1, 0);
    }
}

CharacterController.collisionFlags 碰撞标识

在最后的CharacterController.Move调用期间,胶囊体的哪个部分与周围环境相碰撞

function Update ()
{
    var controller : CharacterController = GetComponent(CharacterController);
    if ((controller.collisionFlags & CollisionFlags.Above) != 0)
        print("touched the ceiling");
}

CharacterController.detectCollisions 检测碰撞

其他的刚体和角色控制器是否能够与本角色控制器相碰撞(默认值始终启用)

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    public CharacterController c;
    public void Awake()
    {
        c = GetComponent<CharacterController>();
        c.detectCollisions = false;
    }
}

CharacterController.height 高度

角色胶囊体的高度

设置控制器的高度为2.0

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    public CharacterController controller;
    public void Awake()
    {
        controller = GetComponent();
        controller.height = 2.0F;
    }
}

CharacterController 角色控制器

用CharacterController组件,它包含Rigidbody组件的一些属性,就不用用Rigidbody组件了

character一般用于主角这类用户控制的物体,它不会受到scene的重力影响,不会被其他物体推。 

程序中可以使用它的move方法移动它,当他碰到静态物体时,会停下来,遇到动态物体时会推开他,当然,这些都是可以通过activegroup来控制的。group最多有32组。因为他是一个NxU32,并通过每一位代表一个组。 

move的一个参数用来告诉程序,character的当前状态。(collisionFlags) 

当他遇到物体的时候,如果设置了回调函数,系统会通过回调函数通知程序。。(NxControllerDesc.callback) 

character还有上楼梯模式,在某些高度的台阶,可以直接上去。(NxControllerDesc.stepOffset)

character还可以设置可以走上去的斜坡。(NxControllerDesc.slopeLimit)

由于character不受场景的重力影响,所以,用户要在move函数中自己添加重力因素,也就是说,character可以浮在空中,除非那里有其他activegroup物体。

CharacterController.isGrounded 是否地面

在最后的移动角色控制器是否触碰地面?

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    void Update()
    {
        CharacterController controller = GetComponent<CharacterController>();
        if (controller.isGrounded)
            print("We are grounded");

    }
}

CharacterController.Move 移动

一个更加复杂的运动函数,每次都绝对运动

这个脚本用箭头键向前移动和侧移角色控制器。

当按下空格键时,它跳起

确保把一个character controller组件附加到同一个游戏物体上

建议你每帧只调用一次Move或者SimpleMove

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    public float speed = 6.0F;
    public float jumpSpeed = 8.0F;
    public float gravity = 20.0F;
    private Vector3 moveDirection = Vector3.zero;
    void Update()
    {
        CharacterController controller = GetComponent<CharacterController>();
        if (controller.isGrounded)
        {   //我们着地了,所以直接通过轴重新计算move direction。
            moveDirection = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
            moveDirection = transform.TransformDirection(moveDirection);
            moveDirection *= speed;
            if (Input.GetButton("Jump"))
                moveDirection.y = jumpSpeed;
        }
        //应用重力
        moveDirection.y -= gravity * Time.deltaTime;
        //移动控制器
        controller.Move(moveDirection * Time.deltaTime);
    }
}

CharacterController.OnControllerColliderHit 控制碰撞器碰撞

当控制器碰撞一个正在运动的碰撞器时,OnControllerColliderHit 被调用

这个脚本推动所有的角色碰撞到的刚体

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    public float pushPower = 2.0F;
    void OnControllerColliderHit(ControllerColliderHit hit) {
        Rigidbody body = hit.collider.attachedRigidbody;
        // 没有刚体
        if (body == null || body.isKinematic)
            return;
        // 我们不想推动在我们下边的物体
        if (hit.moveDirection.y < -0.3F)
            return;
        // 通过移动方向计算推动方向,我们只把物体推到两侧,从不向上和向下推
        Vector3 pushDir = new Vector3(hit.moveDirection.x, 0, hit.moveDirection.z);
        // 如果你知道你的角色移动的有多快,那么你也可以用它乘以推动速度
        // 应用推力
        body.velocity = pushDir * pushPower;
    }
}

CharacterController.radius 半径

角色胶囊体的半径

设置控制器的半径为0.3

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    public CharacterController controller;
    public void Awake()
    {
        controller = GetComponent<CharacterController>();
        controller.radius = 0.3F;
    }
}

CharacterController.SimpleMove 简单移动

以一定的速度移动角色

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    public float speed = 3.0F;
    public float rotateSpeed = 3.0F;
    void Update()
    {
        CharacterController controller = GetComponent<CharacterController>();
        //围绕Y轴旋转
        transform.Rotate(0, Input.GetAxis("Horizontal") * rotateSpeed, 0);
        //向前后移动
        Vector3 forward = transform.TransformDirection(Vector3.forward);
        float curSpeed = speed * Input.GetAxis("Vertical");
        controller.SimpleMove(forward * curSpeed);
    }
}

CharacterController.slopeLimit 坡度限制

角色控制器的坡度度数限制

设置控制器的坡度限制为45.0度

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    public CharacterController controller;
    public void Awake()
    {
        controller = GetComponent<CharacterController>();
        controller.slopeLimit = 45.0F;
    }
}

CharacterController.stepOffset 台阶偏移量

以米为单位的角色控制器的台阶偏移量

台阶高度,步高

设置控制器的台阶高度

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    public CharacterController controller;
    public void Awake()
    {
        controller = GetComponent();
        controller.stepOffset = 2.0F;
    }
}

CharacterController.velocity 速度

角色当前的相对速度

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    void Update() {
        CharacterController controller = GetComponent<CharacterController>();
        Vector3 horizontalVelocity = controller.velocity;
        horizontalVelocity = new Vector3(controller.velocity.x, 0, controller.velocity.z);
        //忽略Y轴的X-Z平面上的速度
        float horizontalSpeed = horizontalVelocity.magnitude;
        //重力或者跳跃引起的速度
        float verticalSpeed = controller.velocity.y;
        //总体速度
        float overallSpeed = controller.velocity.magnitude;
    }
}

CharacterJoint 角色关节

CharacterJoint.highTwistLimit 旋转上限

角色关节围绕原始轴的上限

CharacterJoint 角色关节

角色关节主要用于布娃娃效果 它们是一个扩展的球窝状关节,允许你在每个轴上限制关节

CharacterJoint.lowTwistLimit 旋转下限

角色关节围绕原始轴的下限

CharacterJoint.swing1Limit 旋转限制1

角色关节围绕原始轴的限制

CharacterJoint.swing2Limit 旋转限制2

CharacterJoint.swingAxis 旋转轴

关节可以围绕旋转的副轴

Cloth 布料

Cloth.bendingStiffness 抗弯硬度

布料的抗弯硬度(坚挺的程度)

设置布料的bending Stiffness为1

可以是Skinned Cloth或者Interactive Cloth

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    public void Awake()
    {
        transform.GetComponent<Cloth>().bendingStiffness = 1;
    }
}

Cloth.damping 阻尼

布料运动时的阻尼

设置布料的damping为1

可以是Skinned Cloth或者Interactive

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    public void Awake()
    {
        transform.GetComponent<Cloth>().damping = 1;
    }
}

Cloth.enabled 启用?

是否启用这个布料?

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    public void Awake()
    {
        GetComponent<InteractiveCloth>().enabled = false;
    }
}

Cloth.externalAcceleration 外力

施加于布料的外力,一个恒量

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    public void Awake()
    {   //使布料下落时,受到一半的重力(如果是受重力影响)
        transform.GetComponent<Cloth>().externalAcceleration = -Physics.gravity / 2;
    }
}

Cloth 布料

用来模拟物理布料的基类,通过InteractiveCloth和SkinnedCloth共享

Cloth.normals 法线列表

当前布料物体的法线列表

Cloth.randomAcceleration 随机外力

施加于布料的外力,一个随机变量

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    public void Awake()
    {   //模仿来自X轴向上的风
        transform.GetComponent<Cloth>().randomAcceleration = new Vector3(10, 0, 0);
    }
}

Cloth.selfCollision 自身碰撞

是否产生自身碰撞

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    public void Awake()
    {
        GetComponent<InteractiveCloth>().selfCollision = false;
    }
}

Cloth.stretchingStiffness 韧度

布料的韧性(可拉伸的程度)

设置布料的stretching Stiffness为1

可以是Skinned Cloth或者Interactive

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    public void Awake()
    {
        transform.GetComponent<Cloth>().stretchingStiffness = 1;
    }
}

Cloth.thickness 厚度

布料表面的厚度

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    public void Awake()
    {
        transform.GetComponent<Cloth>().thickness = 0.2F;
    }
}

Cloth.useGravity 使用重力

是否重力影响布料模拟?

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    public void Awake()
    {   // 使布料不受重力的影响
        transform.GetComponent<Cloth>().useGravity = false;
    }
}

Cloth.vertices 顶点列表

当前布料物体的顶点位置列表

ClothRenderer 布料渲染器

ClothRenderer 布料渲染器

ClothRenderer组件和InteractiveCloth 组件配合使用,在场景中使一个布料物体可见

ClothRenderer.pauseWhenNotVisible 不可见时暂停

在ClothRenderer不可见的时,暂停布料模拟

如果这个属性开启,布料只会在任意相机中可见时模拟。这样可改善物理模拟的性能

pauseWhenNotVisible = true;

ClothSkinningCoefficient 布料蒙皮系数

ClothSkinningCoefficient.collisionSphereDistance 碰撞球体距离

定义一个球体的一个顶点不允许进入 这允许反向碰撞动画布料(什么意思)

ClothSkinningCoefficient.collisionSphereRadius 碰撞球体半径

定义一个球体的一个顶点不允许进入 这允许反向碰撞动画布料

ClothSkinningCoefficient 布料蒙皮系数

ClothSkinningCoefficient结构用于设置SkinnedCloth组件允许如何移动,有关SkinnedMeshRenderer是附加的(不懂)

ClothSkinningCoefficient.maxDistance 最大距离

一个点是允许从蒙皮网格点位置运动的距离

ClothSkinningCoefficient.maxDistanceBias 最大距离偏移

通过基于蒙皮网格法线的最大距离,变形定义的球体(what)

Collider 碰撞器

Collider.attachedRigidbody 附加刚体

碰撞器附加的刚体

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    public void Awake()
    {   // Lift the rigidbody attached to the collider.
        //升起附加在碰撞器的刚体
        collider.attachedRigidbody.AddForce(0, 100, 0);
    }
}

Collider.bounds 包围盒

碰撞器在世界坐标空间的包围盒

Collider.ClosestPointOnBounds 到包围盒最近点

到附加碰撞器的包围盒最近的点

当应用于爆炸伤害,这能用于计算伤害点数

var hitPoints : float = 100.0;
function ApplyHitPoints (explosionPos : Vector3, radius : float) {
    // The distance from the explosion position to the surface of the rigidbody
    //从爆炸点到刚体表面的距离
    var closestPoint : Vector3 = collider.ClosestPointOnBounds(explosionPos);
    var distance : float = Vector3.Distance(closestPoint, explosionPos);
    // The hit points we apply fall decrease with distance from the hit point
    //伤害点数,我们使到伤害点距离减少
    var hitPoints : float = 1.0 - Mathf.Clamp01(distance / radius);
    // This is the final hitpoints we want to apply. 10 at maximum
    //这是我们想要的最终伤害点数为10
    hitPoints *= 10;
}

Collider 碰撞器

所有碰撞器的基类(鸡肋)

Collider.isTrigger 是触发器?

碰撞器是一个触发器?

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    public void Awake()
    {   // Turns the attached to collider into a trigger
        //转换附加的碰撞器为一个触发器
        collider.isTrigger = true;
    }
}

Collider.material 材质

碰撞器使用的材质

如果材质被碰撞器共享,它将复制材质并指定给碰撞器

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    public void Awake()
    {   // Makes the collider act like ice.
        //让碰撞器像冰一样(滑动摩擦&&静摩擦==0)
        collider.material.dynamicFriction = 0;
        collider.material.staticFriction = 0;
    }
}

Collider.OnCollisionEnter 进入碰撞

当collider/rigidbody开始触动另一个rigidbody/collider时OnCollisionEnter被调用

如果碰撞器附加一个非动力学刚体,也仅发送碰撞事件

例一

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    void OnCollisionEnter(Collision collision)
    {   // Debug-draw all contact points and normals
        //调试绘制全部的接触点和法线
        foreach (ContactPoint contact in collision.contacts)
        {
            Debug.DrawRay(contact.point, contact.normal, Color.white);
        }
        // Play a sound if the coliding objects had a big impact.
        //如果碰撞物体有一个更大的撞击就播放声音
        if (collision.relativeVelocity.magnitude > 2)
            audio.Play();

    }
}

例二

一个手榴弹

A grenade

一个手榴弹

- instantiates a explosion prefab when hitting a surface

当撞击表面时实例化一个爆炸预设

- then destroys itself

然后销毁它们

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    public Transform explosionPrefab;
    void OnCollisionEnter(Collision collision)
    {   // Rotate the object so that the y-axis faces along the normal of the surface
        //旋转物体,以便y轴方向沿着表面的法线
        ContactPoint contact = collision.contacts[0];
        Quaternion rot = Quaternion.FromToRotation(Vector3.up, contact.normal);
        Vector3 pos = contact.point;
        Instantiate(explosionPrefab, pos, rot);
        // Destroy the projectile
        //销毁炮弹
        Destroy(gameObject);
    }
}

Collider.OnCollisionExit 退出碰撞

当 collider/rigidbody停止触动另一个 rigidbody/collider时,OnCollisionExit被调用

如果碰撞器附加一个非动力学刚体,也仅发送碰撞事件

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    void OnCollisionExit(Collision collisionInfo)
    {
        print("No longer in contact with " + collisionInfo.transform.name);
    }
}

Collider.OnCollisionStay 逗留碰撞

一个碰撞器或刚体触动另一个刚体或碰撞器,在每帧都会调用OnCollisionStay,直到它们之间离开,不接触

如果碰撞器附加一个非动力学刚体,也仅发送碰撞事件

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    void OnCollisionStay(Collision collisionInfo)
    {   // Debug-draw all contact points and normals
        //调试绘制全部接触点和法线
        foreach (ContactPoint contact in collisionInfo.contacts)
        {
            Debug.DrawRay(contact.point, contact.normal * 10, Color.white);
        }
    }
}

Collider.OnTriggerEnter 进入触发器

当碰撞器other进入触发器时OnTriggerEnter被调用

假如一个碰撞物体同时带有一个刚体属性

那么只发送这个触发事件

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    void OnTriggerEnter(Collider other)
    {   // Destroy everything that enters the trigger
        //当进入触发器销毁所有物体
        Destroy(other.gameObject);
    }
}

Collider.OnTriggerExit 退出触发器

当碰撞器离开触发器时,调用OnTriggerExit

假如一个碰撞物体同时带有一个刚体属性

那么只发送这个触发事件

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    void OnTriggerExit(Collider other)
    {   // Destroy everything that leaves the trigger
        //离开触发器时,销毁所有物体
        Destroy(other.gameObject);
    }
}

Collider.OnTriggerStay 逗留触发器

每个碰撞器从进入触发器那一刻到退出触发器之前,几乎每帧都会调用OnTriggerStay

假如一个碰撞物体同时带有一个刚体属性

那么只发送这个触发事件

OnTriggerStay是在每一个Time.fixedDeltaTime的时间节点上运行,不是Time.deltaTime的时间节点上运行

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    void OnTriggerStay(Collider other)
    {   // Applies an upwards force to all rigidbodies that enter the trigger.
        //进入触发器给所有的刚体应用向上的力
        if (other.attachedRigidbody)
            other.attachedRigidbody.AddForce(Vector3.up * 10);
    }
}

Collider.Raycast 光线投射

投射一个光线(Ray),它忽略所有碰撞器,除了这个

// pragma below is needed due to a UnityJS issue
//下面的代码运行于js
#pragma strict

function Update()
{
    var ray : Ray = Camera.main.ScreenPointToRay (Input.mousePosition);
    var hit : RaycastHit;
    if (collider.Raycast (ray, hit, 100.0))
    {
        Debug.DrawLine (ray.origin, hit.point);
    }
}

Collider.sharedMaterial 共享材质

碰撞器的共享物理材质

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    public PhysicMaterial material;
    public void Awake()
    {
        collider.sharedMaterial = material;
    }
}

Collision 碰撞

Collision.collider 碰撞器

我们碰撞的碰撞器

Collision.contacts 接触点列表

接触点由物理引擎产生

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    void OnCollisionStay(Collision collision)
    {   // Check if the collider we hit has a rigidbody
        // Then apply the force
        //检查如果碰撞的碰撞器有刚体,然后应用力
        foreach (ContactPoint contact in collision.contacts)
        {
            print(contact.thisCollider.name + " hit " + contact.otherCollider.name);
            // Visualize the contact point
            //可视化接触点
            Debug.DrawRay(contact.point, contact.normal, Color.white);
        }
    }
}

Collision.gameObject 游戏物体

gameObject是我们碰撞的物体

Collision 碰撞

描述碰撞

Collision.relativeVelocity 相对速度

两个碰撞物体的相对线性速度

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    void OnCollisionEnter(Collision collision)
    {   // Play a sound when we hit an object with a big velocity
        //当以一个较大的速度碰到物体时,播放声音
        if (collision.relativeVelocity.magnitude > 2)
            audio.Play();
    }
}

Collision.rigidbody 刚体

我们碰撞的刚体 如果我们碰撞的物体是一个没有附加刚体的碰撞器,返回null

Make all rigidbodies we touch fly upwards

使我们接触的全部刚体向上飞

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    void OnCollisionStay(Collision collision)
    {   // Check if the collider we hit has a rigidbody
        //检查如果我们接触的碰撞器是一个刚体
        if (collision.rigidbody)
            // Then apply the force
            //然后应用力
            collision.rigidbody.AddForce(Vector3.up * 15);
    }
}

Collision.transform 变换

我们碰撞的物体的Transform

Color 颜色

Color.a 透明

颜色中的Alpha组件

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    public Color color = Color.white;
    public void Awake()
    {
        color.a = 0;
    }
}

Color.b 蓝色

三基色之一的蓝色通道

Color.g 绿色

三基色之一的绿色通道

Color.r 红色

三基色之一的红色通道

Color.black 黑色

纯黑色 RGBA 是 (0, 0, 0, 1)

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    public void Awake()
    {   // Assign a black color to this transform‘s material
        // 赋一个黑色给这个变换的材质
        transform.renderer.material.color = Color.black;
    }
}

Color.blue 蓝色

纯蓝色 RGBA 是(0, 0, 1, 1)

Color.clear 清空

完全透明 RGBA 是 (0, 0, 0, 0)

Color.Color 颜色

用给定的r,g,b,a组件构造一个新的颜色

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    public Color color = new Color(0.2F, 0.3F, 0.4F, 0.5F);
}

Color.cyan 青色

青色 RGBA 是 (0, 1, 1, 1)

Color.gray 灰色 || Color.grey 灰色

灰色 RGBA 是 (0.5, 0.5, 0.5, 1)

Color.grayscale 灰度

颜色的灰度值

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    public Color color = new Color(0.3F, 0.4F, 0.6F);
    public void Awake()
    {
        print(color.grayscale);
    }
}

Color.green 绿色

纯绿色 RGBA 是 (0, 1, 0, 1)

Color.magenta 紫红色

紫红色 RGBA 是 (1, 0, 1, 1)

Color.red 红色

纯红色 RGBA 是 (1, 0, 0, 1)

Color.white 白色

纯白色 RGBA 是 (1, 1, 1, 1)

Color.yellow 黄色

黄色。 RGBA 是怪异的 (1, 235/255, 4/255, 1) , 但是颜色看起来漂亮!

Color.this [int index] 访问索引

分别用[0],[1],[2],[3]访问r,g,b,a组件

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    public Color p;
    public void Awake()
    {
        p[1] = 5;
        // the same as p.g = 5
        // 等同于 p.g = 5
    }
}

Color.Lerp 插值

通过t在颜色a和b之间插值

Converts a white color to a black one trough time.

在一个时间段内将白色逐渐转换成黑色

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    public Color lerpedColor = Color.white;
    void Update()
    {
        erpedColor = Color.Lerp(Color.white, Color.black, Time.time);
    }
}

Color.operator + 运算符 加法

两个颜色相加,每个组件被分别相加

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    // blue + red = magenta
    //蓝色+红色=紫红色
    public Color result = Color.blue + Color.red;
}

以下东西有个屁用

Color.operator Color 运算符 颜色 miss

Color.operator /运算符 除法 miss

Color.operator * 运算符 乘法 miss

Color.operator - 运算符 减法 miss

Color.operator Vector4 运算符 四维向量 miss

Color.ToString 转为字符串 miss

CombineInstance 合并实例

CombineInstance 合并实例

用来描绘网格合并的结构,使用Mesh.CombineMeshes

CombineInstance.mesh 网格

网格合并

CombineInstance.subMeshIndex 子网格索引

网格的子网格索引

CombineInstance.transform 变换

合并之前,网格变换的矩阵

时间: 04-17

Unity API - C的相关文章

Unity API 解析 学习

1 Application类 2 Camera类 3 GameObject类 4 HideFlags类 5 Mathf类 6 Matrix4x4类 7 Object类 8 Quaternion类 9 Random类 10 Rigidbody类 11 Time类 12 Transform类 13 Vector2类 14 Vector3类 1 Application类 1 using UnityEngine; 2 using System.Collections; 3 4 public class

Unity API 解析(9)&mdash;&mdash; Rigidbody 类

模拟 GameObject 对象在现实世界中的物理特性(重力,阻力,质量,速度) 对Rigidbody 对象属性的赋值代码通常放在脚本的OnFixedUpdate 方法中   collisonDetectionMode 属性 -- 碰撞检测模式 刚体的碰撞检测模式有3种 Discrete -- 静态离散检测模式 Continuous -- 静态连续监测模式 ,一般用在高速运动刚体的目标碰撞体上 ContinousDynamic -- 最强的连续动态检测模式 drag 属性 -- 刚体阻力 dra

Unity API 解析(3)&mdash;&mdash; GameObject 类

GameObject 类是Unity场景中所有实体的积累.一个GameObject对象通常由多个组件component组成,且至少含有一个transform组件.   activeSelf 属性 -- GameObject的Active标识 activeInHierarchy 属性的功能是返回GameObject实例在程序运行时的激活状态,它只有当GameObect实例的状态被激活时才会返回true.而且它会受父类对象激活状态的影响.如果其父类至最顶层的对象中有一个对象未被激活,activeIn

Unity API 解析(7)&mdash;&mdash; Object 类

Object 类是Unity中所有对象的基类   GetInstanceID -- Object 对象ID 每个对象在工程中都有唯一的ID,并且从程序开始运行到结束,除非对象被销毁,否则每个实例对应的ID都不会改变 从GameObject.CreatePrimitive() 或 Object.Instantiate() 中创建或克隆的每个名字相同的GameObject对象都有唯一的ID using UnityEngine; using System.Collections; public cla

Unity API 解析(1)

Application 类 Application 类不含实例属性和实例方法,在脚本中通过直接调用Application类的静态属性和静态方法来控制程序的运行时数据 dataPath 属性 -- 数据文件路径 -- 返回程序的数据文件所在文件夹的路径(只读),返回路径为相对路径,不同游戏平台的数据文件保存路径不同 public  static  string  dataPath { get; } dataPath 和 streamingAssetsPath 的路径位置一般是相对程序的安装目录位置

Unity API解析

别想着一步到位,这个是渐进的,以点带面,写点小纸条,放到显眼处,方便随时记忆 第一部分: 游戏三要素: 1.游戏循环 处理输入,更新世界,响应输出 Application 2.游戏时间Time 3.游戏对象 静态对象,动态对象,物体运动(矢量放下,角度,) ObjectGameObjectMaxtrix4 CameraRagidbody Mathf Vector2Vector3 Qualxxx 角度 Transform

Unity API 解析(10)&mdash;&mdash; Time 类

realtimeSinceStartup 属性 -- 程序运行实时时间   smoothDeltaTime 属性 -- 平滑时间间隔 主要用在 FixedUpdate 方法中需要平滑过渡的计算   time 属性 -- 程序运行时间 从游戏启动到现在

Unity API 解析(5)&mdash;&mdash; Mathf 类

此类属于结构体类型,只有静态属性和静态方法,不可实例化 Deg2Rad 属性 -- 从角度到弧度常量 (2*PI)/360 Rad2Deg 属性 -- 从弧度到角度常量 Infinity 属性 -- 正无穷大   Clamp 方法 -- 返回有限范围值 返回有范围限制的value值 ClosestPowerOfTwo -- 返回2的某次幂 用于返回最接近参数值value的2的某次幂的值 DeltaAngle -- 最小增量角度 (-180,180] InverseLerp -- 计算比例值 (v

Unity API 解析(4)&mdash;&mdash; HideFlags 类

HideFlags 为枚举类,用于控制object对象的销毁方法以其在监视面板中的可视性   DontSave 保留对象到新场景 如果GameObject 对象被HideFlags.DontSave标识,则在新Scene中GameObject的所有组件将被保留下来,但其子类GameObject对象不会被保留到新scene中 不可对GameObject对象的某个组件如Transform进行HideFlags.DontSave标识,否则无效 即使程序已经退出,被HIdeFlags.DontSave