2017-08-10 12:44:13 u011360242 阅读数 3809
  • Unity3D入门到精通-(3)Unity资源管理精讲

    本次系列课程的目标是让Unity3D初学者掌握Unity3d的资源管理技术进行了全面介绍,特别对AssetBundle资源如何进行更新,以及加载(依赖资源加载)进行了系统的介绍。 适合对象:Unity初学开发者,Unity中级开发者,网络程序开发者,所有对游戏开发有兴趣的人员。 学习条件:有一定的Unity3D基础,了解C#的基本开发知识。

    4645 人正在学习 去看看 张刚

Unity3D常用API总结

一. MonoBehaviour类及查询API

MonoBehaviour是每个脚本的基类.

MonoBehaviour常用方法及调用顺序

   //最开始调用,做一些初始化工作。建议少用,此刻物体可能还没有实例化出来,会影响程序执行顺序。
    void Awake(){}
    // 不是很紧急的初始化,一般放在Start里面来做。仅在Update函数第一次被调用前调用。
    void Start(){}
    //用户点击检视面板的Reset按钮或者首次添加该组件时被调用。此函数只在编辑模式下被调用。Reset最常用于在检视面板中给定一个最常用的默认值。
    void Reset(){}
    // 每一帧调用一次,帧间隔时间有可能改变。
    void Update(){}
    //以相同时间间隔调用,用在力学更新效果中。执行在Update之前。
    void FixedUpdate(){}
    //在Update和FixedUpdate调用之后调用。一般人物的移动放在Update中,而摄像机的跟进变化放到FixedUpdate中。确保两个独立,一前一后,不产生错误。
    void LateUpdate(){}

    //On开头的方法,是由其他事件触发调用的。
    //物体被删除时调用
    void OnDestroy(){}
    //物体启用时被调用
    void OnEnable(){}
    //物体被禁用时调用
    void OnDisable(){}
    //这个函数会每帧调用好几次(每个事件一次),GUI显示函数只能在OnGUI中调用
    void OnGUI(){}

下图是单个脚本内部方法的调用顺序:
这里写图片描述

查询API:游戏蛮牛Unity3D-API

二. Input类及脚本字段属性在检视面板中的运用

输入系统的接口.
getaxis、getkey、getbutton、getjoystick等函数。

为了提高输入方式在代码中的效率,推荐用GetButton()方法,而不是GetKey().GetButton根据不同的设备进行对应的按键输入,比如手柄,PC,手机 etc.

Unity中定制按钮的方式
Edit–>project setting–>Input
具体按键设定规则见:Unity圣典Input输入

GetKey()、GetKeyDown()、GetKeyUp()方法:

    // 每一帧调用一次,帧间隔时间有可能改变。
    void Update()
    {
        //KeyCode为枚举类
        //GetKey方法:只要按下就会执行 直到不按 执行不止一次
        Input.GetKey(KeyCode.A);
        //GetKeyDown:按下按键执行 执行一次
        Input.GetKeyDown(KeyCode.A);
        //GetKeyDown:按下后松开按键执行 执行一次
        Input.GetKeyUp(KeyCode.A);
        //以上方法返回布尔值
    }

GetButton()、GetButtonDown()、GetButtonUp()方法:

    // 每一帧调用一次,帧间隔时间有可能改变。
    void Update()
    {
        //GetButton方法括号中的值为buttonName(按钮别称) 可在相关文档中查阅
        //GetButton方法:只要按下就会执行 直到不按 执行不止一次
        Input.GetButton("Jump");
        //GetButtonDown:按下按键执行 执行一次
        Input.GetButtonDown("Jump");
        //GetButtonDown:按下后松开按键执行 执行一次
        Input.GetButtonUp("Jump");
        //以上方法返回布尔值
    }

GetAxis() 获取轴

根据坐标轴名称返回虚拟坐标系中的值。
使用控制器和键盘输入时此值范围在-1到1之间。如果坐标轴设置为鼠标运动增量,鼠标增量乘以坐标轴灵敏度的范围将不是-1到1 。

C#脚本:

// A very simplistic car driving on the x-z plane.
// 一个十分简单的在x-z平面的驾车例子
using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    public float speed = 10.0F;//移动速度
    public float rotationSpeed = 100.0F;//旋转速度

    void Update() {
        // Get the horizontal and vertical axis.
        //获取横向和纵向坐标轴
        // By default they are mapped to the arrow keys.
        //默认情况下他们关联到方向键上
        // The value is in the range -1 to 1
        //值的范围是在-1到1之间
        float translation = Input.GetAxis("Vertical") * speed;
        float rotation = Input.GetAxis("Horizontal") * rotationSpeed;

        // Make it move 10 meters per second instead of 10 meters per frame...
        // 使它每帧移动10米变为每秒移动10米...
        translation *= Time.deltaTime;
        rotation *= Time.deltaTime;

        // Move translation along the object's z-axis
        //沿着z轴平移对象
        transform.Translate(0, 0, translation);

        // Rotate around our y-axis
        //以我们的y轴为中心旋转
        transform.Rotate(0, rotation, 0);
    }
}
// Performs a mouse look.
//执行一个鼠标观察
using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    public float horizontalSpeed = 2.0F;
    public float verticalSpeed = 2.0F;
    void Update() {
        // Get the mouse delta. This is not in the range -1...1
        //获取鼠标增量,范围不在-1...1
        float h = horizontalSpeed * Input.GetAxis("Mouse X");
        float v = verticalSpeed * Input.GetAxis("Mouse Y");
        transform.Rotate(v, h, 0);
    }
}

GetJoystickNames() 获取控制杆名称列表

返回一个用来描述已连接的控制杆的字符串集合。
它可以用在用户输入设置界面 –这样,你就可以把显示的标签”Joystick 1”换成意义更明确的名字像”Logitech WingMan”,读取不同控制器的值,你需要分别为各个控制器的数字指定指方向轴如果你想将其使用在输入设置中。

C#脚本:

// Prints a joystick name if movement is detected.
//如果检测到移动就输出一个控制杆名称
using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    void Update() {
        // requires you to set up axes "Joy0X" - "Joy3X" and "Joy0Y" - "Joy3Y" in the Input Manger
        //你需要在输入管理器中设置方向轴"Joy0X" - "Joy3X""Joy0Y" - "Joy3Y"
        int i = 0;
        while (i < 4) {
            if (Mathf.Abs(Input.GetAxis("Joy" + i + "X")) > 0.2F || Mathf.Abs(Input.GetAxis("Joy" + i + "Y")) > 0.2F)
                Debug.Log(Input.GetJoystickNames()[i] + " is moved");

            i++;
        }
    }
}

脚本字段属性在检视面板中的运用:

// Prints a joystick name if movement is detected.
//如果检测到移动就输出一个控制杆名称
using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    //public修饰的变量可以在检视面板中显示
    //private修饰的不能显示

    //可以显示的GameObject类型的数组 
    //在检视面板中有Size(数组大小)和Element(元素)两个属性
    public GameObject[] gameObject = new GameObject[10];

    //可以显示的一个Rigidbody类型的变量
    public Rigidbody rigidbody = new Rigidbody();

    //不能显示的string类型字符串
    private string NPCName = "Max";

    //可以显示的int类型数值
    public int Score = 11;

    //自动补全 在脚本中定义的初始值会在检视面板中显示
    public int Number { get; set; }

    void strat(){}
    void update(){}
}

三.Time类及单例模式实现

常用Time.deltaTime

在Update/LateUpdate中打印Time.deltaTime时间是不固定的,是一个动态变化值,是前两帧之间时间的差值。

在FixedUpdate中打印Time.deltaTime时间是固定的。

deltaTime() 增量时间

以秒计算,完成最后一帧的时间(只读)。
使用这个函数使和你的游戏帧速率无关。

放在Update()函数中的代码是以帧来执行的.如果我们需要物体的移动以秒来执行.我们需要将物体移动的值乘以Time.deltaTime。

如果你加或减一个每帧改变的值,你应该与Time.deltaTime相乘。当你乘以Time.deltaTime实际表示:每秒移动物体10米,而不是每帧10米。

当从MonoBehaviour的FixedUpdate里调用时,返回固定帧速率增量时间(fixedDeltaTime)。

请注意从OnGUI里你不应该依赖于Time.deltaTime,因为OnGUI可以在每帧被多次调用并且每个调用deltaTime将持有相同的值,直到下一帧再次更新。

C#脚本:

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    void Update() {
        // Move the object 10 meters per second!
        //每秒移动物体10米
        float translation = Time.deltaTime * 10;
        transform.Translate(0, 0, translation);
    }
}

单例模式singleton

单例仅允许被实例一次,这就保证了他在各个程序模块间的唯一性。

//一般使用单例模式时,类名可能为GameManager
//通常用于控制游戏流程 哪个关卡 哪一步 角色信息的记录
//排行榜 积分表等
//在游戏中,单例模式一般在数据的保存和读取时用到
private static ModelLocator instance;
public static ModelLocator getInstance{
    get{
        if(instance==null){
            instance=new ModelLocator();
        }
        return instance;
    }
}

详细的Unity中单例模式的应用,百度”Unity中的单例模式”
二周目的时候详细补充在这

四.GameObject类和对象,多种查找GO的方法

gameObject(g小写)代表当前脚本挂载的游戏对象本身。
若使用this.xxx的话调用的是脚本本身而不是游戏对象

GameObject(G大写)代表游戏对象类。

查找GO并赋值Find族函数:

private GameObject go;

go = GameObject.Find(“Cube”);//根据名字查找对象

go = GameObject.FindGameObjectWithTag(string tag);//根据标签查找

go.activeSelf 游戏物体是否被激活(true or false)

go.activeInHierarchy 游戏物体所处层级的父级是否被激活(true or false)


理解游戏组件和游戏对象的关系

创建一个cube,并不是创建一个cube对象,而是创建了挂载着filter和renderer组件的对象


五.Destroy方法和Transform对象(包括对象移动)

Destroy方法:

销毁一个游戏物体。
Destroy(go);
Destroy(go, 3);//等待3s销毁

Transform对象:

位置transform.position(注意是小写t,是monobehaviour类中的默认字段,表示当前脚本挂在的游戏物体的transform信息)

旋转transform.rotation
缩放transform.scale
向量及运算 Vector3

在Unity中为左手坐标系
这里写图片描述

移动对象:

Transform.Translate

Transform.Rotate

transform.position.x获取x轴坐标

Mathf.PingPong 乒乓
让数值t在 0到length之间往返。t值永远不会大于length的值,也永远不会小于0。
返回值将在0和length之间来回移动。

//Mathf.PingPong 乒乓 例子
using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    void Update() {
    // Set the x position to loop between 0 and 3
    //设置x位置循环在0和3之间
        transform.position = new Vector3(Mathf.PingPong(Time.time, 3), transform.position.y, transform.position.z);
    }
}

六.Lerp插值运算

插值运算:位置Vector3.Lerp 旋转Vector3.Slerp
Quaternion targetrotation = Quaternion.LookRotation(player.position - transform.position);
//根据初始和目标位置计算出对应的旋转角度

插值运算不仅仅可以作为位置、旋转、缩放等计算,还可以做为灯光亮度等的差值计算,也就是说只要是从一个确定状态渐进过渡到另一个确定状态的计算,都可以用到插值运算。
位置插值:三维向量
Vector3 targetpostion = player.position + new Vector3(0, 2.42f, -2.42f);
transform.position = Vector3.Lerp(transform.position, targetpostion, speed * Time.deltaTime);
旋转插值:三维角度
Quaternion targetrotation = Quaternion.LookRotation(player.position - transform.position);
transform.rotation = Quaternion.Slerp(transform.rotation, targetrotation, speed * Time.deltaTime);
灯光亮度插值:浮点值
public float newIntensity = 5;
light.intensity = Mathf.Lerp(light.intensity, newIntensity, speed * Time.deltaTime);
//light.intensity位当前灯光的值
颜色插值:
Color.Lerp(currentColor, newColor, speed * Time.deltaTime);
其他比如Material.Lerp、Mathf.InverseLerp等,可以通过查手册了解。

七.Instantiate实例化prefab对象

所有的C#对象都是继承于object类,包括int、float这些函数类型,当然也包括Monobehaviour、GameObject这些类。

static function Instantiate(original: Object, position: Vector3, rotation: Quaternion): Object;

public GameObject Spawn() 
{
    /* 生成prefab的实例化,因为默认是object类型,所以需要强转为GameObject */
    return GameObject.Instantiate(prefab, transform.position, transform.rotation) as GameObject;
}

其他方法:
GameObject.GetComponent:通过游戏物体获取其组件
CharacterController cc = this.GetComponent();
Animator animator = this.GetComponent();
Component.GetComponent:通过游戏物体的组件获取其其他组件Transform player = GameObject.FindGameObjectWithTag(Tags.player).transform;
PlayerATKAndDamage playerAtkAndDamage = player.GetComponent();
//PlayerATKAndDamage是一个脚本AddForce:添加力AddTurque:添加扭矩

八.协同(协程)以及yield

一般用来在脚本中增加延时效果。因为在Start()或者Update()中是不能直接延时的(WaitForSecond())等待某个操作结束之后再执行代码字符串做为参数:

void Start () 
{
    StartCoroutine("DoSomething", 2.0);
    yield WaitForSeconds (1);//可以在任意位置使用yield语句。yield的返回值控制何时恢复协同程序向下执行。这里等待1s之后才会接着执行下面的语句。
    StopCoroutine("DoSomething");
}

void DoSomething (float someParameter) 
{
    while (true) 
    {
        print("DoSomething Loop");
        // 停止协同程序的执行并返回到主循环直到下一帧.
        yield;
    }
}

IEnumerator做为参数:

IEnumerator Start()
{
    StartCoroutine("DoSomething", 2.0F); //StartCoroutine(DoSomething(2.0F)); 使用IEnumerator做参数不能用StopCoroutine停用。
    yield return new WaitForSeconds(1);
    StopCoroutine("DoSomething"); //请注意只有StartCoroutine使用一个字符串方法名时才能用StopCoroutine停用之。
}

IEnumerator DoSomething(float someParameter)
{
    while (true) {
        print("DoSomething Loop");
        yield return null;
    }
}

开启协同:
StartCoroutine(string methodName):字符串作为参数可以开启线程并在协程结束前终止线程;开启协程时最多只能传递一个参数,并且性能消耗会更大一点
StartCoroutine(IEnumerator routine):只能等待协程的结束而不能随时终止(除非使用StopAllCoroutines()方法)
中止协同:
StopCoroutine(string methodName):中止一个协同,只能终止该MonoBehaviour中的协同程序
StopAllCoroutines():中止所有协同,只能终止该MonoBehaviour中的协同程序
将协同程序所在gameobject的active属性设置为false,当再次设置active为ture时,协同程序并不会再开启。

yield

yiled:和协同密切相关的一个概念,一个协同程序在执行过程中,可以在任意位置使用yield语句。yield的返回值控制何时恢复协同程序向下执行。
yield不可单独使用

  需要与return配合使用,例如:

  1 yield return 0; //等0帧

  2 yield return 1; //等1帧

  3 yield return WaitForSeconds(3.0); //等待3秒

 4 yield return null;//立即返回调用点

  所有使用yield的函数必须将返回值类型设置为IEnumerator类型,例如:
  

IEnumerator DoSomeThingInDelay() {...}

当然,你也可以把Start()返回值定义为IEnumerator类型,那么在Start里面也可以使用yield延时返回,但不推荐这样做:

IEnumerator Start()
{
    StartCoroutine("DoSomething", 2.0F); //StartCoroutine(DoSomething(2.0F)); 使用IEnumerator做参数不能用StopCoroutine停用。
    yield return new WaitForSeconds(1);
    StopCoroutine("DoSomething"); //请注意只有StartCoroutine使用一个字符串方法名时才能用StopCoroutine停用之。
}

你也可以把StartCoroutine和yiled return结合起来使用,保证函数执行顺序,这样调用能保证,init1,init2,init3一个一个的执行,不至于出现后面执行的代码引用一个前面未初始化的变量:

IEnumerator Init()
{
    yield return StartCoroutine(init1());
    Debug.Log("init1 finish");
    yield return StartCoroutine(init2());
    Debug.Log("init2 finish");
    yield return StartCoroutine(init3());
    Debug.Log("init3 finish");
}

IEnumerator init1()
{
    // 模拟初始化
    yield return new WaitForSeconds(2);//
}
IEnumerator init2()
{
    // do somthing..
    yield return new WaitForSeconds(2);//
}
IEnumerator init2()
{
    // do somthing..
    yield return new WaitForSeconds(2);//
}

相关的api总结文章有:
个人开发Unity3d游戏中常用API函数

2016-01-26 15:11:25 cbbbc 阅读数 2521
  • Unity3D入门到精通-(3)Unity资源管理精讲

    本次系列课程的目标是让Unity3D初学者掌握Unity3d的资源管理技术进行了全面介绍,特别对AssetBundle资源如何进行更新,以及加载(依赖资源加载)进行了系统的介绍。 适合对象:Unity初学开发者,Unity中级开发者,网络程序开发者,所有对游戏开发有兴趣的人员。 学习条件:有一定的Unity3D基础,了解C#的基本开发知识。

    4645 人正在学习 去看看 张刚
很多时候我们需要美术把贴图合并为一张贴图,现在在unity3d里通过几行代码就可以轻松完成(注释:今天查看API时发现的没想到如此好用),查看unity3dAPI你会发现Texture2D有个
Texture2D.PackageTextures的API
这个API可以自动将你的几张贴图合并为一张大图最大大小还能自定义,贴上一段我的测试代码和屏幕截图(只做测试用的有需要可以做成一个小工具)

using UnityEngine;
using UnityEditor;
using System.Collections;
using System.IO;


public class TexturePackage : MonoBehaviour {


public Texture2D[] texture;
public Rect[] rects;


[ContextMenu("TexturePack")]
void TexturePack()
{
Texture2D altas = new Texture2D (2048, 2048);
rects = altas.PackTextures (texture, 2, 2048);
byte[] buffer = altas.EncodeToPNG();
File.WriteAllBytes (Application.dataPath + "/alta.jpg",buffer);
AssetDatabase.Refresh();
}
}

如上面代码所示(前提你的Texture2D必须是ARGB32,RGBA32,或者是Alpha8的并且设置为可读),
代码中返回的Rects有什么用的这个是很有用的,这个可以映射到材质球Material的UV,Tilling和Offset上,Rect的x,y分别对应Offsets的x,yRect的width和height分别对应材质球的Tilling的x和y,也就是说你可以在材质球上显示你想要的贴图
2017-07-16 20:10:17 dark00800 阅读数 16312
  • Unity3D入门到精通-(3)Unity资源管理精讲

    本次系列课程的目标是让Unity3D初学者掌握Unity3d的资源管理技术进行了全面介绍,特别对AssetBundle资源如何进行更新,以及加载(依赖资源加载)进行了系统的介绍。 适合对象:Unity初学开发者,Unity中级开发者,网络程序开发者,所有对游戏开发有兴趣的人员。 学习条件:有一定的Unity3D基础,了解C#的基本开发知识。

    4645 人正在学习 去看看 张刚

Unity3d不久之前正式发布了Unity3d 2017.1, 这个版本的发布也宣告了Unity3d正式告别了5.x时代,并且开始已年份直接命名,开启了新的纪元。那么Unity3d 2017相较上一版本到底有哪些改进呢?

这介绍这些改进之前先放出下载地址:Unity 2017.1
有趣的是通过Unity产品蓝图我们可以发现Unity 2017.2 beta已经提供下载测试并且Unity 2017.3也已经在制作中了。
这里写图片描述
Unity 2017.2 beta下载地址:Unity 2017.2 beta

以下关于Unity2017.1的介绍内容来自Unity官方中文社区,原帖地址:[官方] Unity 2017.1正式版发布

Unity 2017.1中包含大量新功能与改进。主要内容如下:

  • 艺术家和设计师们:全新的叙事和游戏视频创作工具
    Unity 2017.1为艺术家和设计师们提供了全新的工具,使用Timeline,Cinemachine和Post-processing工具,可以创造令人惊叹的影视内容,合成精美相机镜头,描绘更好的视觉故事。
    Timeline是一款强大的可视化新工具,可用于创建影视内容,例如过场动画、预告片、游戏试玩视频等等。
    Cinemachine是一个高级相机系统,您可以像电影导演一样,在Unity中合成镜头,无需编写任何代码,引领您进入程序化摄影时代。
    Post-processing可以很方便地为场景应用各种逼真滤镜,使用电影工业级技术、控件和颜色空间格式来创造高质量视觉效果,让画面更生动、更逼真,助您描绘更好的视觉故事。
  • 效率:协作、实时操作分析、工具
    我们发布了Unity Teams,它由一系列简化创作者协作流程的功能和解决方案组成,包含Collaborate多人协作(现已发布)和Cloud Build云构建。
    实时操作分析系统引入了新的、更简单的方法,帮助您理解用户,并在不需要重新部署的情况下,对游戏做出动态的反应和调整。
    最重要的是,Unity 2017.1对编辑器进行了大量更新,包括对FBX导入、动画工作流程、2D功能、Asset Bundle工作流和Visual Studio集成的改进。
  • 图形与平台:全面改进
    Unity 2017.1对粒子系统和Progressive Lightmapper进行了大量改进,提供了更多选择来实现您的艺术愿景并控制性能。不同平台可采用不同的渲染品质,例如iOS平台上的Deferred Rendering,和PC上的NVIDIA VRWorks。
    这些都只是Unity 2017.1的亮点概念,下面将介绍完整丰富的细节内容!

Unity 2017.1新看点

艺术家叙事工具: Timeline和Cinemachine介绍

设计师、艺术家或动画师们可以使用新的集成叙事工具,自己制作影视内容和游戏视频,而不用依赖程序员。这意味着开发效率更高,而节约沟通与排队成本。

Timeline是一款强大的可视化新工具,可用于创建影视内容(例如短片Adam)。通过编排游戏对象、动画、声音和场景,来创建过场动画、游戏视频等等。有了Timeline,您可以专注于叙事和电影艺术创作,而非编码。

Timeline基于轨道的序列工具,使用“拖放”操作来编排动画、声音、事件、视频等元素,以更快地创建漂亮的过场动画和程序化内容。Timeline有许多功能,例如动画、音频、自动关键帧,以及可以锁定或静音特定轨道的多轨道界面。Timeline可通过Playable API进行扩展,支持创建自定义轨道,来驱动游戏中的任意系统。您可以制作一个Timeline剪辑来表示几乎所有内容——并且可以重复播放、缩放和混合这些剪辑,所有这些都可在Timeline中实现。
这里写图片描述

Cinemachine 是多年游戏和电影摄像机的构建经验凝聚而成的结晶。现在,它将业界领先的摄像操作置于所有人手中,引领了程序化摄影的时代。

这是一套智能摄像机,可以动态的根据场景组成和交互,在最佳时间拍摄最佳镜头。使您摆脱无尽的手工动画、摄像机编程以及修订的过程。

Cinemachine可以在Asset Store资源商店中下载,现在就添加到您的项目中。

从第一人称射击游戏到第三人称动作冒险,您可以用Cinemachine彻底改变游戏内摄像机。很容易地:

  • 像电影导演那样,使用高级摄像机工具及真实的摄像机设置,来控制视频序列。
  • 合成镜头,把重点放在艺术方向上,而非实现细节。给Cinemachine智能摄像机一个简单的指示,比如跟随人物的头部,如果动画发生变化,镜头会自动更新并继续正常工作。
    这里写图片描述

    在Unity 2017.1中,我们为Cinemachine增加了很多新功能,比如:

  • 多个目标对象:以多个对象为目标,并设置它们的权重。它基于任意数量的对象创建一个逻辑组,根据其成员的位置来定位自己。在跟踪一组对象时,可以将其用作LookAt和Follow方法的目标。对2D场景也非常适用。
  • 动态取景多个对象:该功能将基于对象的位置自动取景一组目标。如果对象散开,Cinemachine将根据您创建的一套规则调整FOV或推拉(或两者同时进行)
  • 全新开放API:轻松定制Cinemachine配置,获得项目需要的摄像机行为。
  • 推拉轨道:创造出像电影一样的推拉镜头,让摄像机在游戏世界里平滑移动。适合于电影序列,或当您希望摄像机沿着一组轨道跟踪拍摄对象时。
  • 安全镜头:安全镜头会根据镜头优先级与质量,动态选择最佳的摄像机。有东西进了取景框,破坏了镜头?没问题,Cinemachine会切换到下一个最佳摄像机。尤其适用于回放或任何一个可变场景的电影序列。

Timeline和Cinemachine结合使用,您可以将叙事带入更高的层次。使用后处理栈来进一步创建特效,烘托场景氛围和戏剧效果。
这里写图片描述

改进Post-processing栈(测试)

Post-processing将全屏滤镜和特效应用于摄像机的图像缓冲区,然后再将其显示在屏幕上。您可以使用图像后处理特效来模拟物理摄像机和电影效果。

最新版的Post-processing栈测试版可以在此下载。最终版预计将于今年夏季发布。(注意:上一个稳定版本可以在Asset Store资源商店中下载)

改进后的后处理栈将一组完整的图像效果整合到单个后期处理流程中,并带有一系列高质量的摄像机效果:

  • Screen-space anti-aliasing
  • Auto Exposure
  • Motion Blur
  • Bokeh Depth of Field
  • Bloom
  • Color Grading
  • Chromatic Aberration
  • Film Grain
  • Vignette

您可以将多个特效组合到单个Pass中,使用基于Asset的预设配置系统管理特效也非常轻松。

颜色分级效果是一种支持Academy Color Encoding System (ACES)的全HDR颜色管线,低端平台可以使用LDR管线。该栈有两个屏幕空间的光照特效,即环境光遮蔽和屏幕空间反射。

这个新版本还提供了一个基于体积的混合特性,您可以在场景中定义区域(任何类型的网格),并在玩家进入区域时设置特定的氛围/外观。Unity会自动在体积之间进行混合,以实现流畅的外观转换。
这里写图片描述

Unity Collaborate多人协作已正式发布!现为Unity Teams一员

Unity Collaborate多人协作已结束测试,与Cloud Build云构建一起成为Unity Teams的一部分,仅用一个解决方案一套功能,即可帮助您更快速地进行团队协作。Unity Teams将可免费使用至2017年10月。

点击了解有关Unity Teams的更多内容。

对于Collaborate多人协作,我们在Unity 2017.1中发布的首个发布版本优先处理了Beta用户提供的反馈。除了性能改进、稳定性和Bug修复之外,我们还增加了一组新功能:选择性推送、更佳的Asset浏览器集成和一个新的“In Progress”功能,用以标志团队成员在某个场景或预制件上有未发布的本地更改。
这里写图片描述

以下是我们为Collaborate多人协作添加的一些新功能:

  • In Progress标志
    为场景和预制件添加了In Progress标志,以指示团队中其他人已对某个场景或预制件做出了一些未发布的本地更改。这个特性有助于协作者协调对场景和预制件的更改。
    这里写图片描述
    这里写图片描述

  • 右键单击选择发布
    我们添加了右键单击操作,现在您可以在项目浏览器中直接发布、恢复、查看差异,解决文件冲突。这是一个主要的用户痛点源头,我们希望使Collaborate的行为与其他项目浏览器的行为更加一致。请注意,这种UX允许您选择性地发布已更改的Asset。之前的版本中,您必须发布所有更改。
    这里写图片描述

  • 浏览体验更佳
    在项目浏览器的“收藏”中添加了新的过滤器,包括“所有修改”、“所有被排除”和“所有冲突”,这样用户就可以看到他们所有修改过的文件、所有正在修改的文件、带有冲突的文件和忽略的文件。特别要留意的是“All in Progress(一切都在进行中)”,这让您可以实时看到Collaborate团队中的其他人正在处理哪些Asset(稍后将详细介绍)。
    这里写图片描述

  • 实时操作分析
    Unity 2017.1可以通过数据驱动的实时操作,随时获得丰富的分析数据。深入了解您的用户与您作品的互动情况,并实时做出相应的调整,迎合他们的习惯,无需重新部署新版本。在Unity 2017中,您可以更好地为用户提供更佳的游戏体验。
    通过Standard Events (目前是Beta版)可以进行更高效的洞察,它提供了一组精心设计的预定义事件,可揭示与您游戏相关的重要信息。使用新的Analytics Event Tracker,无需代码即可实现这些功能。
    这里写图片描述
    使用Remote Settings特性,可以即时更改游戏,无需重新部署,该特性已添加到Unity Analytics分析服务中。
    这里写图片描述

  • 2D改进
    在Unity 5.6中,我们为2D游戏开发者对工具和工作流程进行了重大改进。Unity 2017.1中引入了2D Sprite Atlas,这是一种新的Asset,将取代Sprite Packer。随着它的出现,新改进的工作流程可以在运行时更好地控制精灵的打包和使用。图集是Unity中2D工作流程的重要组成部分,而精灵图集不仅提供了更简单的图集创建和管理方式,还有相应的脚本API,可获得更多的控制和用途。
    这里写图片描述
    Sprite Masks用于在世界空间中隐藏或显示精灵或精灵组的一部分。精灵遮罩仅对拥有Sprite Renderer组件或粒子系统的对象生效。
    这里写图片描述
    在Unity 2017.1中,我们还为精灵编辑器添加了精灵物理形状。可以为精灵设置自定义的默认形状,以使用PolygonCollider2D生成碰撞器形状。

  • 动画改进
    我们对Animation窗口进行了全面修改,改进了关键帧的工作流程,使动画制作更方便和熟练,并支持与Animator状态机进行交互。Performance Recording是一个实验性功能。
    新的关键帧工作流程支持明确指定何时将哪帧变为关键帧,并在重新评估/预览动画时,将所有未修改且未关键帧化的属性值都丢弃。我们已经改变了在Animation窗口中编辑剪辑的默认行为(新的默认预览模式)、视觉反馈和全局关键帧操作热键。这些变化的目的是在Animation窗口之外为关键帧操作提供一个流畅的工作流程,同时预览动画剪辑无需处于自动关键帧或录制模式下。
    现在在编辑器中可以对状态机行为进行调试。
    我们还引入了GameObjectRecorder,这是一个新的实验性编辑器特性,它允许您记录GameObject和它子对象上的任何属性。这样就可以轻松地创建动画,将被记录的所有内容保存到一个动画剪辑中。欢迎访问论坛进行反馈。
    这里写图片描述

  • Playables已正式发布
    Playables API通过使用树状结构的PlayableGraph组织和评估数据来源,提供一种创建工具、特效或其他游戏机制的方法。PlayableGraph允许您混合和修改多个数据源,合成为单一输出后播放。
    Playables API支持动画、音频和脚本。Playables API还提供了通过脚本来与动画系统和音频系统进行交互的能力。
    Playable API是一个通用API,它最终将用于视频和其他系统。查看文档了解更多细节。

  • Ambisonic音频
    在Unity 2017.1中,我们增加了对环绕立体声音频剪辑的支持,这是全方位环绕音频技术,它(除了水平面外)还覆盖了听众上方和下方的声源。
    Ambisonics以多声道格式储存。它不是将每个通道都映射到一个特定的扬声器,而是以一种更通用的方式来表示声场。然后,根据聆听者的方向(即XR中用户的头部旋转),旋转声场。声场也可以被解码成一种与扬声器设置相匹配的格式。Ambisonics通常与360度视频结合使用,也可以用作音频天空盒,表现遥远的环境声音。
    我们还添加了Ambisonic解码器插件,而且现在也可以使用正开发中的API,在新的叙事工具Timeline中使用音频剪辑了。

  • 编辑器改进
    我们在UnityEditor.IMGUI.Controls中添加了一个新的ArcHandle类,它可以在场景视图中交互式地编辑弧线。还加入了名为SearchField的新IMGUI控件,它带有普通和工具栏用户界面风格,但也可以自行定制。
    这里写图片描述
    现在还支持使用JetBrains Rider作为外部脚本编辑器。
    其他改进还包括对所有播放器循环阶段添加分析器标签,改进Package Export加载状态,以及记录已连接玩家的日志信息,这些都将出现在编辑器控制台中,使调试更加轻松。

  • 改进了对Visual Studio的支持,包括Mac OS
    Unity安装程序现在可以选择在Windows上安装Visual Studio Community 2017(而非Visual Studio Community 2015)。安装速度显著提高也更轻量。
    Mac用户也别难过,现在可以使用Visual Studio了!微软发布了Mac版的Visual Studio和Tools for Unity。Visual Studio for Mac还提供了许多很酷的功能:一键调试,Unity消息的IntelliSense(完整Unity特定库代码),着色器代码高亮显示等等(点此查看详情)。

  • 场景与Asset Bundle改进
    我们对游戏中的场景和Asset Bundle进行了一些改进。更改底层架构使场景和Asset Bundle加载速度更快,从而使玩家体验更加流畅。我们还创建了一个工具,Asset Bundle浏览器——以帮助创建和优化Asset Bundle。

  • Asset Bundle浏览器
    Asset Bundle浏览器的Beta版与Unity 2017.1一同发布。该工具允许您在Unity项目中查看和编辑Asset Bundle的配置。它的目的是替换当前选择Asset的工作流,并在检视窗口中手动设置Asset Bundle的工作流程。现在您可以集中查看所有的Asset Bundle配置。通过使用上下文菜单和拖放功能,配置、修改和分析相关资源包。
    该工具将标记可能值得关注的警告,并提示将中断资源包创建的错误。从上层查看包集合,您可以更有效地组织Asset Bundle。在更低层查看单个Asset Bundle,您可以看到由于显式包含或依赖项的关系,哪些内容将会放入包中。
    更多细节请查阅文档
    这里写图片描述
    Asset Bundle浏览器可以从Asset Store资源商店下载。

  • 脚本运行时升级(实验性):畅享 C# 6和.NET 4.6
    在Unity 2017.1中,我们引入了实验性版本的脚本运行时内核,该内核已升级到Mono/.NET 4.6运行时。它包含了许多修复、性能改进,可以使用C# 6。我们相信它会提高游戏的整体性能。
    可以在Player Settings中启用.NET 4.6:
    这里写图片描述
    注意,更改该设置会在重启编辑器后生效,因为它会影响编辑器和播放器。对应的脚本API是PlayerSettings.scriptingRuntimeVersion属性。
    IL2CPP完全支持新的.NET 4.6 API,因此您仍可使用C#编写脚本,同时享有原生C++的性能优势。如果您发现任何问题,请访问论坛进行反馈。

  • 模型导入器改进
    从像Maya这样流行的数字内容创作(DCC)工具导入Asset的过程是首批重要的改进对象,这使得DCC工作流程变得更加轻松。最终提高了艺术家和设计师的生产力,减少了程序员的麻烦。
    现在Unity导入从Maya导出的FBX文件已支持Segment Scale Compensation,而且FBX SDK已升级至2016.1.2。
    在导入FBX文件时,我们还添加了计算加权法线的选项,如按面积、角度或二者皆有,以及硬边缘的固定法线生成。现在,可以从FBX文件中导入灯光和摄像机,Unity会自动在需要时为对象添加和配置摄像机和/或灯光组件。
    Unity现在可以使用“Import Visibility”属性从FBX文件中读取可见性属性。值和动画曲线将启用或禁用MeshRenderer组件:
    这里写图片描述

  • Progressive Lightmapper改进
    Unity 2017.1增加了Progressive Lightmapper中对烘焙LOD的支持。在烘焙LOD时,Enlighten和Progressive Lightmapper之间的主要区别在于,使用Progressive Lightmapper不必在LOD周围放置光照探针来获得反射光。在完全烘焙分辨率下,间接光照将为LOD提供更优质的烘焙光照贴图,您也可以避免为它们设置光照探针的繁琐过程。(Unity 5.6中也有此功能。)
    我们还在Progressive Lightmapper中增加了对双面材质的支持,通过添加新的材质设置,使光线与背面接触。启用后,在进行全局光照计算时几何体的两面都被包括在内。当从其他对象观察时,背面不会被认定为无效。背面渲染既不受该设置的控制,也不会在光照贴图中显示。背面使用与正面相同的自发光和漫反射设置反射光线。(该功能也可在Unity 5.6中使用)
    这里写图片描述

  • 实时阴影改进
    我们优化了在稳定模式下,级联定向光源阴影投射器的选择。这意味着生成阴影贴图时会产生更少的Draw Call。这增益是与场景和配置相关的。例如,在四个级联光的情况下,可以看到Draw Call数量显著下降。根据太阳/摄像机的方向,场景中可以减少50%的阴影投射器。下面是维京村庄的一个例子:
    下面的场景在Unity 5.6中有5718个阴影投射器。
    这里写图片描述
    在Unity 2017.1中,相同的场景,只有4807个阴影投射器。
    这里写图片描述
    Unity 2017.1还实现了实时阴影的Percentage Closer Filtering (PCF)。每个像素的深度值都是从当前像素周围的阴影贴图中取样,并所有的采样值进行比较。这使得光和影之间的线条更加平滑。您可以在下图中看到对比:
    这里写图片描述
    除了实时阴影改进,Shadowmask和Distance Shadowmask光照模式现在已成为Quality Setting中的参数,可以在运行时进行修改而无需任何成本。例如,可以在室内使用Shadowmask (实现柔和的阴影),并在相同关卡中的户外场景切换至distance Shadowmask。它也可以作为一个质量设置项。
    我们还添加了Custom Render纹理作为渲染纹理的扩展,可以很方便地用着色器来更新纹理。这有助于实现各种复杂的模拟,比如焦散光、雨滴涟漪模拟,墙面液体喷溅等等。它还提供了一个脚本和着色器框架,以便进行更复杂的配置,比如局部或多阶段更新,不同的更新频率等等。
    这里写图片描述
    有了新添加的LineUtility类和LineRenderer.Simplify函数,现在可以优化线条,用LineUtility创建由简单形状组成的简化版本。
    使用Metal/OpenGL ES3实现iOS上的Deferred Rendering
    我们为A8芯片和以后的iOS设备启用了一个使用Metal和OpenGL ES 3.0的延迟渲染路径。当使用延迟着色时,能够影响GameObject的灯光数量是没有限制的。所有的灯光都是按像素计算的,这意味着它们都能与法线贴图进行正确的交互等等。此外,所有的灯光都可以有剪影和阴影。

  • 粒子系统改进
    我们引入了精灵集成,粒子碰撞力(可以推动碰撞器),大量形状方面的改进,包括一个新的形状类型,噪音模块增加了新选项,以及其他一些较小的特性和增强。因为增加了新的控制和约束,例如速度与对齐,使得在2D中使用粒子更加轻松。可以使用粒子来获得比以往更多的特效和动画效果,包括光线的线条和尾迹。
    通过Texture Sheet Animation模块,我们在粒子系统中增加了对精灵使用的支持。这使粒子系统能更好地进行了图集处理和批处理,同时也在粒子系统中增加了大量与精灵相关的特性,例如不同大小的动画帧,以及每帧的轴心点。
    这里写图片描述
    这里写图片描述
    噪音模块提供了新的选项,可以更好地将噪音应用于粒子效果中。这个功能在Unity 5.5中第一次实现,噪音是被应用到粒子的位置属性。在2017.1中,我们可以将噪音应用到更多的地方:
    -位置
    -旋转
    -大小
    -使用Custom Vertex Streams的着色器(非常适合制作UV失真效果!)
    这里写图片描述
    在粒子系统形状模块的碰撞模式中,我们引入了一个新的甜甜圈粒子发射形状和编辑模式。模块内的Transform可以为粒子发射的形状应用自定义位置、旋转和缩放。
    其他的改进还包括将粒子与速度方向对齐的能力,以及允许在局部空间系统使用Emit over Distance。边缘粒子发射现在更加灵活,可以选择用来产生粒子的边缘厚度。
    粒子现在也可以使用碰撞模块对碰撞器进行施力。
    这里写图片描述

  • Windows Store现在改名为Universal Windows Platform
    Unity现在支持Windows商店的Universal Windows Platform(UWP)应用模式,支持为Xbox One、Windows 10、Windows Phone 10和HoloLens进行构建。
    请注意,对Windows混合现实PC设备的支持将在今年晚些时候发布。
    这里写图片描述
    我们增加了对UWP的多显示支持,现在Unity播放器二进制文件已做数字签名,增加了额外的一层安全性,可以防止对Unity运行时二进制文件进行篡改。
    最后,我们取消了对Windows 8.1和Windows Phone 8.1应用的支持,Unity 5.6是最后一个支持这两个平台的版本。

  • 索尼PS4的视频播放器
    我们在Unity 5.6中引入了一个全新的视频播放器,在Unity 2017.1中正式加入了对索尼PS4的支持,从而完成了对跨平台的支持。PS4的视频播放器使用索尼的AvPlayer库来加速h.264流的解码。解码h.264流(PS4的推荐格式)时,CPU开销非常低。可以同时对最多8个并发h.264流进行解码。它还支持对webm容器中的VP8格式流进行软件解码(更高的CPU开销)。最后,它支持多种视频渲染模式(直接渲染到摄像机的近/远平面,作为材质覆盖,或渲染纹理),音频流可以直接输出或发送到音频源进行混合。

  • 底层原生插件渲染扩展
    我们已经扩展了底层渲染插件API,并提供了一些很酷的新特性:
    -现在可以将用户数据发送到回调函数。
    -我们已经扩展了插件将接收回调的可能事件列表。
    -我们在着色器编译器进程中添加了钩子,可以在发送到编译器之前对着色器打补丁。支持创建自定义关键字所控制的自定义变体。
    -要想了解这些扩展的威力,请查看NVIDIA的VRWorks包,它是实现这一切的基石。

  • VR: NVIDIA VRWorks
    现在,在Unity 2017.1中,NVIDIA VRWorks通过以下特性,为虚拟现实提供了一种全新高度的视觉保真度、性能和响应能力:
    -Multi-Res Shading是一种用于VR的创新性渲染技术,它可以使图像的每一部分都能渲染在一个与镜头矫正图像像素密度相匹配的分辨率上。
    -Lens Matched Shading使用NVIDIA基于Pascal的GPU的新Simultaneous Multi-Projection架构,为像素着色提供潜在的性能改进。
    -Single Pass Stereo使用NVIDIA基于Pascal的GPU的新Simultaneous Multi-Projection架构,仅对几何体进行一次绘制,即可在双眼视图同时投射相同几何体。
    -VR SLI为虚拟现实应用程序提供更高的性能,其中两个GPU可以被指派给特定眼睛,极大地加速立体渲染。
    这里写图片描述
    为了更好地利用这些改进,应该在PC上使用GeForce 9系列或更高的GPU来进行回放。可以访问Asset Store资源商店下载NVIDIA VRWorks for Unity

  • 发布说明
    与往常一样,请查阅发布说明,以了解新特性、改进和修复的完整列表。

以上内容来源Unity官方中文社区,原帖地址:http://forum.china.unity3d.com/thread-25171-1-1.html
本文仅做转载和整理。

by:蒋志杰

2015-03-19 11:37:55 poem_of_sunshine 阅读数 1593
  • Unity3D入门到精通-(3)Unity资源管理精讲

    本次系列课程的目标是让Unity3D初学者掌握Unity3d的资源管理技术进行了全面介绍,特别对AssetBundle资源如何进行更新,以及加载(依赖资源加载)进行了系统的介绍。 适合对象:Unity初学开发者,Unity中级开发者,网络程序开发者,所有对游戏开发有兴趣的人员。 学习条件:有一定的Unity3D基础,了解C#的基本开发知识。

    4645 人正在学习 去看看 张刚

 

 

AccelerationEvent 加速度事件

AccelerationEvent.acceleration 加速度的值

AccelerationEvent.deltaTime 增量时间--------经过一段时间至最后加速度测量。

 

 

 

AnimationCurve动画曲线

An animation curve. Lets you addkeyframes and evaluate the curve at a given time.

动画曲线.让你在给定时间插入关键帧和数值的曲线.

A collection of curves form an AnimationClip.

曲线的集合组成动画剪辑(AnimationClip

Variables变量

·        keys

All keys defined in theanimation curve.

动画曲线中定义的所有键.

·        this[int index]

Retrieves the key at index(Read Only)

检索索引中的键.(只读)

·        length

The number of keys in thecurve (Read Only)

曲线中键的数量(只读)

·        preWrapMode

The behaviour of theanimation before the first keyframe

第一帧关键帧之前动画的行为

·        postWrapMode

The behaviour of theanimation after the last keyframe

最后一帧关键帧之后动画的行为

Constructors构造器

·        AnimationCurve

Creates an animation curvefrom arbitrary number of keyframes. 

根据任意数量的关键帧创建一个动画曲线.

Functions函数

·        Evaluate

Evaluate the curve at time.

曲线在某时刻的值

·        AddKey

Add a new key to the curve.

在曲线中加入一个键

·        MoveKey

Removes the keyframe at indexand inserts key.

删除索引处的关键帧并插入键

·        RemoveKey

Removes a key

删除一个键

·        SmoothTangents

Smooth the in and outtangents of the keyframe at index.

平滑索引处关键帧的切线

Class Functions类函数

·        Linear

A straight Line starting attimeStart, valueStart and ending at timeEnd, valueEnd

一条直线,开始于timeStart, valueStart 终止于 timeEnd, valueEnd

·        EaseInOut

An ease-in and out curvestarting at timeStart, valueStart and ending at timeEnd, valueEnd.

一个渐入渐出的曲线, 开始于timeStart, valueStart 终止于 timeEnd, valueEnd

 

 

 

AnimationEvent动画事件

AnimationEvent lets you call a scriptfunction similar to SendMessage as part of playing back an animation.

AnimationEvent类似于SendMessage让你调用一个脚本函数,这个脚本是动画播放的一部分

Animation events support functions thattake zero or one parameter. The parameter can be a float, a string, an objectreference, or an AnimationEvent.

动画事件支持没有或有一个参数的函数.参数可以是浮点型,字符串,引用对象或AnimationEvent

Variables变量

·        stringParameter

String parameter that isstored in the event and will be sent to the function.

字符串参数,保持在事件中并发送给函数

·        floatParameter

Float parameter that isstored in the event and will be sent to the function.

浮点型参数,保持在事件中并发送给函数

·        intParameter

int parameter that is storedin the event and will be sent to the function.

整型参数, 保持在事件中并发送给函数

·        objectReferenceParameter

Object reference parameterthat is stored in the event and will be sent to the function.

引用对象参数,保持在事件中并发送给函数

·        functionName

The name of the function thatwill be called.

欲调用的函数的名字

·        time

The time at which the eventwill be fired off.

引发该事件的时间

·        messageOptions

Function call options.

函数调用选项

·        animationState

The animation state thatfired this event (Read Only).

引发事件时的函数状态(只读)

Constructors构造器

·        AnimationEvent

Creates a new animation event

创建新的动画事件

 

 

 

 

AnimationState动画状态

Inherits fromTrackedReference

The AnimationState gives full controlover animation blending.

AnimationState完全控制动画混合。

In most cases the Animation interfaceis sufficient and easier to use. Use the AnimationState if you need fullcontrol over the animation blending any playback process.

多数情况下,Animation已经满足使用。如果你需要完全控制动画混合,可以使用AnimationState

The AnimationState interface allows youto modify speed, weight, time and layers while any animation is playing. Youcan also setup animation mixing and wrapMode.

播放动画时,AnimationState允许你修改速度,权值,时间和层。你也可以设置动画合成和wrapMode(循环模式)

The Animation

Variables变量

·        enabled

Enables / disables theanimation.

启动/禁止动画

·        weight

The weight of animation

动画的权重。

·        wrapMode

Wrapping mode of theanimation.

动画的循环模式

·        time

The current time of theanimation

动画当前时间

·        normalizedTime

The normalized time of theanimation.

动画当前规范化时间

·        speed

The playback speed of theanimation. 1 is normal playback speed.

动画的播放速度。1为正常速度。

·        normalizedSpeed

The normalized playback speed.

规范化播放速度。

·        length

The length of the animationclip in seconds.

动画剪辑的长度,单位是秒。

·        layer

The layer of the animation.When calculating the final blend weights, animations in higher layers will gettheir weights

动画层。计算混合权值时,较高层将优先获取权值。

·        clip

The clip that is being playedby this animation state.

此动画状态播放的剪辑。

·        name

The name of the animation

动画的名字

·        blendMode

Which blend mode should beused?

使用哪种混合模式?

Functions函数

·        AddMixingTransform

Adds a transform which shouldbe animated. This allows you to reduce the number of animations you have tocreate.

加入一个动画变换。这使你减少创建动画的工作量。

·        RemoveMixingTransform

Removes a transform whichshould be animated.

删除应该是动画的变换。

 

 

Application应用程序

Access to application run-time data.

访问应用程序的运行时数据。

This class contains static methods forlooking up information about and controlling the run-time data.

这个类包含静态方法,来查找相关信息并控制运行时数据。

Class Variables类变量

·        loadedLevel

The level index that was lastloaded (Read Only).

最后加载的关卡索引(只读)

·        loadedLevelName

The name of the level thatwas last loaded (Read Only).

最后加载的关卡的名字。

·        isLoadingLevel

Is some level being loaded?(Read Only)

是否有一些关卡正在读取(只读)

·        levelCount

The total number of levelsavailable (Read Only).

可用的关卡总数。(只读)

·        streamedBytes

How many bytes have wedownloaded from the main unity web stream (Read Only).

我们从主Unity网页流中下载了多少字节(只读)。

·        isPlaying

Returns true when in any kindof player (Read Only).

当在任何种类的播放器时,返回真(只读)。

·        isEditor

Are we running inside theUnity editor? (Read Only)

是在Unity编辑器内运行?

·        isWebPlayer

Are we running inside a webplayer? (Read Only)

是否在一个网络播放器中运行?(只读)

·        platform

Returns the platform the gameis running (Read Only).

返回游戏运行的平台(只读)。

·        runInBackground

Should the player be runningwhen the application is in the background?

应用程序在后台时是否应该被运行?

·        dataPath

Contains the path to the gamedata folder (Read Only).

包含游戏数据文件夹的路径(只读)。

·        persistentDataPath

Contains the path to apersistent data directory (Read Only).

包含一个持久数据目录的路径(只读)。

·        temporaryCachePath

Contains the path to atemporary data / cache directory (Read Only).

包含一个临时数据/缓存目录的路径(只读)。

·        srcValue

The path to the web playerdata file relative to the html file (Read Only).

相对于html文件的web播放器数据文件的路径(只读)。

·        absoluteURL

The absolute path to the webplayer data file (Read Only).

web播放器数据文件夹的绝对路径(只读)。

·        unityVersion

The version of the Unityruntime used to play the content.

用于播放内容的Unity运行时版本。

·        webSecurityEnabled

Indicates whether Unity'swebplayer security model is enabled.

指示是否webplayer的安全模式是否被启用。

·        targetFrameRate

Instructs game to try torender at a specified frame rate.

命令游戏尝试以一个特定的帧率渲染。

·        systemLanguage

The language the user'soperating system is running in.

用户操作系统正在运行的语言

·        backgroundLoadingPriority

Priority of backgroundloading thread.

后台装载线程优先级

·        internetReachability

Returns internet reachabilitystatus.

返回网络可达性状态。

Class Functions类函数

·        Quit

Quits the player application.Quit is ignored in the editor or the web player.

退出应用程序。在编辑器或者web播放器中退出被忽略。

·        CancelQuit

Cancels quitting theapplication. This is useful for showing a splash screen at the end of a game.

取消退出。这可以用来在退出游戏的时候显示一个退出画面。

·        LoadLevel

Loads the level.

加载关卡,也就是加载一个新的场景。

·        LoadLevelAsync

Loads the levelasynchronously in the background.

在后台异步加载关卡,也就是说,在后台非同步加载新的场景。

·        LoadLevelAdditiveAsync

Loads the level additivelyand asynchronously in the background.

在后台异步累加关卡,也就是说在后台非同步加载新的场景,但当前的场景不会被销毁。

·        LoadLevelAdditive

Loads a level additively.

累加一个关卡,也就是说,加载一个新的场景,当前场景不会被销毁。

·        GetStreamProgressForLevel

How far has the download progressed?[0...1]

下载的进度是多少?

·        CanStreamedLevelBeLoaded

Can the streamed level beloaded?

能流模式加载的关卡是否被加载?

·        CaptureScreenshot

Captures a screenshot at pathfilename as a PNG file.

捕捉屏幕作为一个PNG文件保存在路径filename。简单来说就是截屏

·        ExternalCall

Calls a function in thecontaining web page (Web Player only).

调用一个包含在网页中的函数(只用于WebPlayer)。

·        ExternalEval

Evaluates script snippet inthe containing web page (Web Player only).

调用包含在网页中的片段脚本函数(只用于WebPlayer)。

·        OpenURL

Opens the url in a browser.

在浏览器中打开url

·        RegisterLogCallback

Register a delegate to becalled on log messages.

在一个日志信息上注册一个委托来被调用。

·        RegisterLogCallbackThreaded

Register a delegate to becalled on log messages.

在一个日志信息上注册一个委托来被调用。

Delegates委托

·        LogCallback

Use this delegate type withRegisterLogCallback to monitor what gets logged.

RegisterLogCallback来使用这个委托类型,去监控什么得到记录了

 

 

 

 

AudioSettings音频设置

Controls the global audio settings fromscript.

从脚本控制全局音频设置。

Setup speaker output and format.

设置扬声器输出和格式。

Class Variables类变量

·        driverCaps

Returns the speaker modecapability of the current audio driver. (Read Only)

返回当前音频驱动程序的扬声器功能模式。(只读)

·        speakerMode

Sets or gets the currentspeaker mode. Default is 2 channel stereo.

设置或获取当前扬声器的模式。默认为2声道立体声。

 

 

 

 

BitStream比特流

The BitStream class represents seralizedvariables, packed into a stream.

比特流类代表被封装成流的序列化的变量。

Data can be serialized, transmitted, andthen received by remote clients by using this class. See the Network Viewcomponent reference page for general information on network synchronization andthe Network.OnSerializeNetworkView function for more information.

数据可以被序列化、传输,然后被远程客户端用这个类接受。参见帮助手册Network View component reference 页面获得网络同步的一般信息,参见Network.OnSerializeNetworkView函数获得更多的信息。

Variables变量

·        isReading

Is the BitStream currentlybeing read? (Read Only)

比特流是否正在被读取?(只读)

·        isWriting

Is the BitStream currentlybeing written? (Read Only)

比特流是否正在被写入?(只读)

Functions函数

·        Serialize

Serializes different types ofvariables.

序列化不同类型的变量。

 

BoneWeight骨骼权重

Struct

Skinning bone weights of a vertex in themesh.

网格中一个顶点的蒙皮骨骼权重。

Each vertex is skinned with up to fourbones. All weights should sum up to one. Weights and bone indices should bedefined in the order of decreasing weight. If a vertex is affected by less thanfour bones, the remaining weights should be zeroes.

每一个被蒙皮的点最多有4个骨骼。所有权重的和应该为1。权重和骨骼索引应该以权重递减的顺序定义。如果一个顶点被少于四个骨骼影响,剩下的权重应该为0

参考:Mesh.boneWeights 变量.

Variables变量

·        weight0

Skinning weight for firstbone.

第一个骨骼的蒙皮权重。

·        weight1

Skinning weight for secondbone.

第二个骨骼的蒙皮权重。

·        weight2

Skinning weight for thirdbone.

第三个骨骼的蒙皮权重

·        weight3

Skinning weight for fourthbone.

第四个骨骼的蒙皮权重

·        boneIndex0

Index of first bone.

第一个骨骼的索引

·        boneIndex1

Index of second bone.

第二个骨骼的索引

·        boneIndex2

Index of third bone.

第三个骨骼的索引

·        boneIndex3

Index of fourth bone.

第四个骨骼的索引

 

 

 

 

Bounds 边界框

Struct

Represents an axis aligned bounding box.

表示一个轴对齐边界框。

An axis-aligned bounding box, or AABB forshort, is a box aligned with coordinate axes and fully enclosing some object.Because the box is never rotated with respect to the axes, it can be defined byjust its center and extents, or alternatively by min and max points.

一个轴对齐边界框,或AABB的简称,是一个坐标轴对齐的盒子并完全包围某些物体。由于这个盒子不会相对于轴旋转,它只可以通过centerextents定义,或者由minmax点定义。

边界框用于Collider.boundsMesh.boundsRenderer.bounds.

Variables变量

·        center

The center of the boundingbox.

边界框的中心。

·        size

The total size of the box.This is always twice as large as the extents.

包围和的总大小。这个总是extents的两倍大。

·        extents

The extents of the box. Thisis always half of the size.

边界框的广度。这个总是size的一半。

·        min

The minimal point of the box.This is always equal to center-extents.

边界框的最小点,这个总是等于center-extents

·        max

The maximal point of the box.This is always equal to center+extents.

边界框的最大点,这个总是等于center + extents

Constructors构造器

·        Bounds

Creates new Bounds with agiven center and total size. Bound extents will be half the given size.

用给定的中心和总大小,创建一个新的边界框。边界框extents将是给定size的一半。

Functions函数

·        SetMinMax

Sets the bounds to the minand max value of the box.

设置边界框的最小和最大值。

·        Encapsulate

Grows the Bounds to includethe point.

增大边界框以包含这个点。

·        Expand

Expand the bounds byincreasing its size by amount along each side.

通过增加amount的大小沿着每条边扩大边界框。

·        Intersects

Does another bounding boxintersect with this bounding box?

这个边界框是否和另一个边界框相交?

·        Contains

Is point contained in thebounding box?

这个点包含在包含盒中么?

·        SqrDistance

The smallest squared distancebetween the point and this bounding box.

点和这个边界框之间的最小平方距离。

·        IntersectRay

Does ray intersect thisbounding box?

射线与这个边界框相交么?

·        ToString

Returns a nicely formattedstring for the bounds.

返回边界框格式化好的字符串。

 

 

 

Caching缓存

The Caching class lets you manage cachedAssetBundles, downloaded using WWW.LoadFromCacheOrDownload.

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

Class Variables类变量

·        spaceFree

Available disk space inbytes.

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

·        spaceOccupied

Used disk space in bytes.

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

·        maximumAvailableDiskSpace

The total number of bytesthat can potentially be allocated for caching.

可能会被用于缓存,分配的字节总数。

·        expirationDelay

截止延迟

·        enabled

Is caching enabled?

缓存是否启用?

·        ready

 准备

Class Functions类函数

·        Authorize

Authorize this unity contentto use caching.

授权这个Unity内容使用缓存。

·        CleanCache

Delete the cache folderassociated with this content.

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

·        IsVersionCached

Checks if an AssetBundle iscached.

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

·        MarkAsUsed

Bumps the timestamp of acached file to be the current time.

标记一个缓存文件到当前的时间。

 

 

 

ClothSkinningCoefficient布料蒙皮系数

Struct

The ClothSkinningCoefficient struct isused to set up how a SkinnedCloth componentis allowed to move with respect to the SkinnedMeshRenderer it is attached to.

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

This is set using the SkinnedCloth.coefficients property on the SkinnedClothcomponent, which is a per-vertex array of ClothSkinningCoefficient structs.Typically, you will not set these values from code, but instead, set them up inthe editor which shows up when you look at the SkinnedCloth component in theinspector.

这是在SkinnedCloth组件设置使用SkinnedCloth.coefficients属性,这是一个ClothSkinningCoefficient结构的每个顶点数组。通常情况下,你不会从代码中设置这些值,但相反,当你在检视面板看SkinnedCloth组件显示出来时,在编辑器设置它们。

Variables变量

·        maxDistance

Distance a vertex is allowedto travel from the skinned mesh vertex position.

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

·        maxDistanceBias

Distorts the sphere definedby the maxDistance based on skinned mesh normals.

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

·        collisionSphereRadius

Definition of a sphere avertex is not allowed to enter. This allows collision against the animatedcloth.

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

·        collisionSphereDistance

Definition of a sphere avertex is not allowed to enter. This allows collision against the animated cloth.

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

 

 

Collision碰撞

Describes collision.

描述碰撞。

Collision information is passed to Collider.OnCollisionEnterCollider.OnCollisionStay and Collider.OnCollisionExit events.

碰撞(Collision)信息是传递到Collider.OnCollisionEnter Collider.OnCollisionStay  Collider.OnCollisionExit事件。

参见ContactPoint.

Variables变量

·        relativeVelocity

The relative linear velocityof the two colling objects (Read Only).

两个碰撞物体的相对线性速度(只读)。

·        rigidbody

The Rigidbody we hit (ReadOnly). This is null if the object we hit is a collider with no rigidbodyattached.

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

·        collider

The Collider we hit (ReadOnly).

我们碰撞的碰撞器(只读)。

·        transform

The Transform of the objectwe hit (Read Only).

我们碰撞的物体的Transform(只读)。 

·        gameObject

/gameObject/ is the object weare colliding with. (Read Only).

gameObject是我们碰撞的物体(只读)。

·        contacts

The contact points generatedby the physics engine.

接触点由物理引擎产生。

 

 

 

 

 

 

 

Color3232位颜色

Struct

Representation of RGBA colors in 32 bit format

表示32位格式RGBA颜色。

Each color component is a byte value with a range from 0 to 255.

每个颜色组件的字节值范围从0255

Components (r,g,b) define a color in RGB color space. Alphacomponent (a) defines transparency - alpha of 255 iscompletely opaque, alpha of zero is completely transparent.

组件(r,g,b) RGB颜色空间内定义一个颜色。 Alpha组件(a) 定义透明度 — alpha 值是 255 是完全不透明,alpha值是0表示完全透明。

Variables变量

·        r

Red component of the color.

颜色中的红色组件。

·        g

Green component of the color.

颜色中的绿色组件。

·        b

Blue component of the color.

颜色中的蓝色组件。

·        a

Alpha component of the color.

颜色中的Alpha组件。

Constructors构造器

·        Color32

Constructs a new Color withgiven r, g, b, a components.

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

Functions函数

·        ToString

Returns a nicely formattedstring of this color.

返回该颜色一个格式化好的字符串。

Class Functions类函数

·        operator Color32

Color32 can be implicitlyconverted to and from Color.

·        operator Color

Color32 can be implicitlyconverted to and from Color.

·        Lerp

Interpolates between colors aand b by t.

 

 

 

Color 颜色

Struct

Representation of RGBA colors.

RGBA代表的颜色。

This structure is used throughout Unity to pass colors around.Each color component is a floating point value with a range from 0 to 1. 

这个结构被用来在整个Unity中传递颜色。每个颜色的组件是一个范围从01之间的浮点型值

Components (r,g,b) define a color in RGB color space. Alpha component (a)defines transparency - alpha of one is completely opaque, alpha of zero iscompletely transparent.

组件(r,g,b) RGB颜色空间内定义一个颜色。 Alpha组件(a) 定义透明度 — alpha 值是 1 是完全不透明,alpha 值是 0 是完全透明。

Variables变量

·        r

Red component of the color.

颜色中的红色组件。

·        g

Green component of the color.

颜色中的绿色组件。

·        b

Blue component of the color.

颜色中的蓝色组件。

·        a

Alpha component of the color.

颜色中的Alpha组件。

·        grayscale

The grayscale value of thecolor (Read Only)

颜色的灰度值(只读)

·        this [int index]

Access the r, g, b,acomponents using [0], [1], [2], [3] respectively.

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

Constructors构造器

·        Color

Constructs a new Color withgiven r,g,b,a components.

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

Functions函数

·        ToString

Returns a nicely formattedstring of this color.

返回该颜色一个格式化好的字符串。

Class Variables类变量

·        red

Solid red. RGBA is (1, 0, 0,1).

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

·        green

Solid green. RGBA is (0, 1,0, 1).

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

·        blue

Solid blue. RGBA is (0, 0, 1,1).

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

·        white

Solid white. RGBA is (1, 1,1, 1).

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

·        black

Solid black. RGBA is (0, 0,0, 1).

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

·        yellow

Yellow. RGBA is weird (1,235/255, 4/255, 1), but the color is nice to look at!

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

·        cyan

Cyan. RGBA is (0, 1, 1, 1).

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

·        magenta

Magenta. RGBA is (1, 0, 1,1).

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

·        gray

Gray. RGBA is (0.5, 0.5, 0.5,1).

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

·        grey

English spelling for gray.RGBA is the same (0.5, 0.5, 0.5, 1).

英语的另一个写法,grey=gray,灰色。 RGBA (0.5, 0.5, 0.5, 1)

·        clear

Completely transparent. RGBAis (0, 0, 0, 0).

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

Class Functions类函数

·        operator +

Adds two colors together.Each component is added separately.

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

·        operator -

Subtracts color b from colora. Each component is subtracted separately.

颜色a减去颜色b,每个组件分别相减。

·        operator *

Multiplies two colorstogether. Each component is multiplied separately.

两个颜色相乘,每个组件分别相乘。

·        operator /

Divides color a by the floatb. Each color component is scaled separately.

颜色a除以浮点数b,每个颜色组件分别相除。

·        Lerp

Interpolates between colors aand b by t.

通过t在颜色ab之间插值。

·        operator Vector4

Colors can be implicitlyconverted to and from Vector4.

颜色能被隐式转换到Vector4,也能由Vector4转回颜色。

·        operator Color

Colors can be implicitlyconverted to and from Vector4.

颜色能被隐式转换到Vector4,也能由Vector4转回颜色。

 

 

 

CombineInstance合并实例

Struct

Struct used to describe meshes to be combined using Mesh.CombineMeshes.

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

Variables变量

·        mesh

Mesh to combine

网格合并

·        subMeshIndex

Submesh index of the mesh

网格的子网格索引。

·        transform

Matrix to transform the meshwith before combining

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

 

 

 

ContactPoint接触点

Struct

Describes a contact point where the collision occurs.

描述碰撞发生那里的一个接触点。

Contact points are stored in Collision structure.

接触点是储存在Collision碰撞结构。

参考:CollisionCollider.OnCollisionEnterCollider.OnCollisionStayCollider.OnCollisionExit.

Variables变量

·        point

The point of contact.

接触的点。

·        normal

Normal of the contact point.

接触点的法线

·        thisCollider

The first collider incontact.

第一个接触的碰撞器

·        otherCollider

The other collider incontact.

接触的其他碰撞器

 

 

 

 

2014-08-21 22:25:34 u011476173 阅读数 2351
  • Unity3D入门到精通-(3)Unity资源管理精讲

    本次系列课程的目标是让Unity3D初学者掌握Unity3d的资源管理技术进行了全面介绍,特别对AssetBundle资源如何进行更新,以及加载(依赖资源加载)进行了系统的介绍。 适合对象:Unity初学开发者,Unity中级开发者,网络程序开发者,所有对游戏开发有兴趣的人员。 学习条件:有一定的Unity3D基础,了解C#的基本开发知识。

    4645 人正在学习 去看看 张刚

记录自己学习unity3d的历程。


1、简介

        在unity网站http://unity3d.com/unity/download 下载unity3d(我的版本是4.5.3),安装完后激活免费版,开始学习。

        http://edu.china.unity3d.com/learning_document  u3d官方手册


2、创建unity项目

        打开unity,创建一个新项目。

                          


3、认识unity

     


3.1   工具栏



3.1.1        Transform(变换)工具

         主要用于Scene视图,用来控制和操作场景及游戏对象。从左到右依次为Hand(手形)工具、Translate(移动)工具、Rotate(旋转)工具、Scale(缩放)工具。

        .Hand           (手形)工具:     快捷键为Q,使用手性工具可以整体平移Scene视图。

        .Translate   (移动)工具:     快捷键为W,使用移动工具可以在Scene视图中移动选择的游戏对象,可以点中某个方向箭头(x、y、z坐标轴)来在指定方向上移动,也可以点中某个面锁定对应的方向来移动(即:改变其他两个方向的坐标)。

        .Rotate        (旋转)工具:     快捷键为E,使用旋转攻击可以在Scene视图中旋转选择的游戏对象,可以点中某条线围绕固定轴旋转,也可以点中对象任意位置随意旋转。

        .Scale          (缩放)工具:    快捷键为R,使用缩放工具可以在Scene视图中缩放选择的游戏对象,可以点中某条线在某个方向上单独缩放,也可以点击中心的方块整体缩放。


3.1.2        Gizmo切换

        .Center/Pivot: 改变游戏对象的轴心点

                Center 改变游戏对象的轴心为物体包围盒的中心;Pivot 使用物体本身的轴心。

        .Global/Local 游戏对象在Scene视图中的坐标轴

                Global 使用世界坐标轴;Local 使用自身坐标轴。


3.1.3        播放控件

        播放控件使用户可以自由的在编辑和游戏状态之间随意切换,使得游戏的调试和运行变得便捷、高效。在播放模式下,用户对游戏场景的所有修改都是临时的,所有的修改在退出游戏预览模式后都会被还原。从左到右依次为Play、Pause、Step

        .Play:        预览游戏,按下该键,编辑器会激活Game视图;再次按下则退出游戏预览模式。

        .Pause:    暂停预览,用来暂停游戏,再次按下该键可以让游戏从暂停的地方继续运行。

        .Step:        逐帧预览,用来逐帧预览播放的游戏,可以在游戏中一帧一帧的运行游戏,方便用户查找游戏存在的问题。


3.1.4        Layers(分层)下拉列表

        用来控制在Scene视图中游戏对象的显示,在下拉列表中为勾选状态的物体将会被显示在Scene视图中。


3.1.5        Layout(布局)下拉列表

        用来切换视图的布局,用户也可以存储自定义的界面布局。可以选择自己喜欢的布局模式来开发项目,在项目开发中有的时候切换布局会有助于开发。


3.2    Scene(场景)视图

        场景视图中包含游戏中所有的游戏对象。您将使用场景视图 来选择和定位环境、玩家、相机、敌人和所有其他游戏对象 (GameObjects)。调动和操控场景视图中的对象是 Unity 最重要的功能。

        .按住鼠标右键进入漫游 (Flythrough) 模式。用鼠标和方向键(W、S、A、D、 Q 和 E )进入第一视角视图导航。

        .选择任何游戏对象 (GameObject) 并按 F 键。这将确定所选对象在场景视图 的中心位置及轴点。

        .使用箭头键在 X/Z 平面上移动。

        .按住 Alt 键单击拖动,使相机围绕当前轴点旋转。

        .按住 Alt 键并单击中键拖动,拖动场景视图相机。

        .按住 Alt 键并右击拖动,缩放场景视图。与滚动鼠标滚轮的效果相同。


3.3    Game(游戏)视图

        游戏视图从游戏的相机(Camera)中呈现,代表所发布游戏的最终版,您将需要一台或以上的相机来控制玩家玩游戏时真实看到的情景。


3.4    Hierarchy(层级)视图

        层级视图包含当前场景中的每个游戏对象(GameObject),有些事三维模型等资源文件的直接实例,其余是预设(Prefab)实例,自定义对象构成游戏的绝大部分。可在层级视图中选择对象,还可以将一个对象拖到另一个对象内,以应用父子化。在场景中添加或删除对象后,还将在层级视图中显示或消失。


3.5    Project(工程)视图

        在 工程视图 中,可以访问和管理属于工程的资源。


3.6    Inspector(检视器)视图

        Unity中的游戏包含多个游戏对象,检视器视图显示当前所选游戏对象的详细信息,包括所有附件组件(Components)及其属性。在此视图中可以修改场景中游戏对象的函数、组件及属性。


Unity3D API中GL

阅读数 124

Unity常用API

阅读数 4283

没有更多推荐了,返回首页