29784人加入学习
(126人评价)
Unity API常用方法和类详细讲解(基于Unity5.6)
价格 免费
承诺服务

void  update(){

Ray ray=new Ray(transform.position+transform.forward, transform.forward);

bool isCollider=Physics.Raycast(ray);

Bebug.Log(iscollider);

}

[展开全文]

射线检测
UGUI 事件监听
    1,拖拽
    2,代码添加
    3,通过实现接口
WWW
触摸事件  Easytouch
Camera
CharacterController
Mesh
Material
Animator

unity 4.x 5.x 2017

GetComponent<Rigidbody2D>() 代替 rigidbody2D
GetComponent<Rigidbody>() 代替 rigidbody
GetComponent<AudioSource>() 代替 audio

Unity 5.3:
ParticleSystem main = smokePuff.GetComponent<ParticleSystem>();
main.startColor
Unity 5.5+:
ParticleSystem.MainModule main = smokePuff.GetComponent<ParticleSystem>().main;
main.startColor

SceneManagement 代替 Application

OnLevelWasLoaded() 在 Unity 5中被弃用了。

2D/3D sound 如何设置2D/3D声音

[展开全文]

    

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class wuo : MonoBehaviour {
    
    private Material mat;

    
    void Start () {
        mat = GetComponent<MeshRenderer>().material;
        
    }
    
    
    void Update () {
        mat.color = Color.Lerp(mat.color, Color.red, Time.deltaTime );
        Time.timeScale = 0.01f;
    }
}
 

[展开全文]

siki学院:www.sikiedu.com


如何看Unity文档和API手册
Unity中的事件方法
Help->Unity Manual/Scripting Reference

Time.deltaTime 当前帧运行占用的时间
    realtimeSinceStartup 从游戏开始到现在的总时间
    smoothDeltaTime 
    fixedTime
    timeScale

GameObject游戏物体
    activeSelf 自身的属性(若某一游戏物体有一个子物体,如果该游戏物体被禁用了,则子物体的activeSelf可以为true)
    activeInHierarchy 在Hierachy面板中的属性(如上例,该子物体的activeInHierarchy一定为false)
    GameObject go.activeInHierarchy
    GameObject go.SetActive(true/false);通过该语句设置游戏物体的activeInHierarchy属性
    tag 标签   区分不同的游戏物体
    GameObject go.tag
    
构造GameObject的方法
    1,new 直接实例化
    GameObject go = new GameObject("Cube");
    2,Instantiate  可以根据一个prefab或者另外一个游戏物体克隆
    GameObject.Instantiate(prefab);
    3,CreatePrimitive  创建原始的集合体
    GameObject.CreatePrimitive(PrimitiveType.Plane);
    GameObject go = GameObject.CreatPrimitive(PrimitiveType.cube)

AddComponent 添加组件
    GameObject go.AddComponent<Collider 2D>();

Tranform  任何游戏物体都会有的一个组件,该组件控制着该游戏物体最基本的属性(坐标,旋转角度,大小)
     该组件不可被删除

    Object Destroy 游戏物体销毁
    Destroy/DestoryImmediate  推荐使用Destroy 
    Destory可以销毁游戏物体也可以销毁游戏物体的组件
    Destroy(gameObject, 5);  销毁游戏物体
    Destroy(GetComponent<Rigidbody>()); 销毁游戏物体组件
    DontDestroyOnLoad 切换场景时,该游戏物体不会被销毁

GameObject和Component 相同点和区别


游戏物体或组件的查找
    GameObject.Find
    GameObject go = GameObject.Find("Main Camera");该方法的返回值是一个GameObject类型变量,注意括号内是一个字符串类型
    FindObjectOfType(可以直接调用也可以用GameObject调用)往往返回的是一个游戏物体或某一组件类型的变量
    FindObjectsOfType (同上)往往返回的是一个游戏物体或组件数组类型的变量
    上述两个方法不会查找未激活的游戏物体
    Light light = FindObjectOfType<Light>();(查找到之后就可以对查找到的物体或组件进行控制)
     Camera cam = (Camera)FindObjectOfType(typeof(Camera));
    Transform[] ts = FindObjectsOfType<Transform>();
    FindWithTag
    transform.Find

GetComponet(s)InChildren


Mathf
Deg2Rad
Infinity

Clamp
ClosestPowerOfTwo
Lerp
LerpAngle
MoveTowards
PingPong
Round
SmoothDamp

Input
GetKey..
GetAxis
OnMouse

Vector2

Vector3

Random 随机整数 随机小数的生成
什么是随机种子

Quaternion
什么是四元数
Quaternion.LookRotation
Euler
Lerp
Slerp

Rigibody
mass velocity
useGravity isKinematic

AddForque
AddForce
MovePosition


Camera
mainCamera
ScreenPointToRay
ScreenToWorldPoint
WorldToScreenPoint

Application.dataPath

streamingAssetsPath
persistentDataPath
temporaryCachePath

companyName
idenifier
installerName
isEditor
isFocused
isMobilePlatform
isPlaying
is

场景加载
SceneManager
LoadScene LoadSceneAsync
GetActiveScene

CaptureScreenshot
 

[展开全文]

SceneManager

scenecount加载场景数量

sceneCountInBuildSettings Build里场景个数

isLoaded

name

path

rootcount

GetSceneAt

GetSceneByBuildIndex

SetActiveScene

[展开全文]

切换加载场景

using UnityEngine.SceneManagement;

SceneManager.LoadScene(序列号/"名字")

LoadSceneMode single/additive

single是创建新的场景,additive是把场景加到当前场景上

[展开全文]

Application.

identifier

companyName

ProductName

installMode

isEditor

isFocused

isMobilePlatform

isPlaying

isWebPlayer

platform

unityVersion

version

runInBackGround

Quit()

OpenURL()

CaptureScreenShot

[展开全文]

Application.dataPath路径

StreamingAssets

[展开全文]

camera

获取mainCamera组件可以通过Camera.main实现

 Ray ray=mainCamera.ScreenPointToRay(Input.mousePosition);

RaycastHit hit;

bool isCollider=physics.raycast(ray,out hit)

 

[展开全文]

playerRgd.AddForce(Vector3 force)

[展开全文]

如果持续不断的旋转的话用Rigidbody.MoveRotation()

[展开全文]

Rigidbody.position和Rigidbody.rotation

这两个虽然是transform里的,但是可以通过刚体组件修改。用rigidbody改完之后transform会自动更新,且性能比transform.position好

推荐使用Moveposition来进行物体的移动

Rigidbody.MovePosition(Vector3 position)

 

[展开全文]

Quaternion.Lerp(Quaternion a,Quaternion b,t)

当a和b相差较大时效果看起来不太好

在做朝向的时候推荐使用Slerp

跟角度有关的插值都推荐用Slerp

[展开全文]

Quaternion.Enler()可以把一个欧拉角变换成四元数

 旋转:

cube.eulerAngles=new Vector3(45,45,45);

cube.rotation=Quaternion.Euler(new Vector3(45,45,45,));

Quaternion.LookRotation()

示例:

Vector3 dir=enemy.position-player.position;

(如果不希望有高度差的话要dir.y=0;)

player.rotation=Quaternion.LookRotation(dir);

[展开全文]

四元数

Quaternion(x,y,z,w)

不需要了解太深入,知道怎么使就完事了

Transform里的rotation用的是四元数,不能直接用Vector3赋值解决,这时需要用欧拉角

 

[展开全文]

Random.value可以随机得到一个0到1之间的值

Random.state当前随机数生成的状态

Random.rotation随机得到一个朝向

Random.insideUnitCircle随机得到某个单位圆内的坐标,是一个二维向量

Random.insideUnitSphere随机生成某个单位圆内的坐标。

[展开全文]

随机数

Random.Range(a,b)生成从a到b的数,生成的数不包括最大值b

Random.InitState(int seed)计算机的随机数是伪随机数,是通过某种方式算出来的。如果括号内的seed不改,那么通过这种方式生成的随机数在每次运行的时候都是一样的。一般情况下括号内的变量使用时间(初始化时用System.DateTime.Now.Ticks)。不用关注这个,unity会自动帮忙初始化使每次生成的随机数都不一样

[展开全文]

授课教师

SiKi学院老师

课程特色

图文(1)
下载资料(2)
视频(71)