Unity常用API

1、Event Function:事件函数

Reset() :被附加脚本时、在游戏物体的组件上按Reset时会触发该事件函数
Start() :在游戏初始化时会执行一次
Update() :每一帧都会运行这个方法,根据每一帧调用的时间来决定,每一帧的时间于系统渲染性能有关。
FixedUpdate(): 会在指定帧调用该方法多少次,固定时间频率调用,适用于物理操作(有效预防抖动问题)
LateUpdate(): 晚于Update的运行顺序,但是FPS和Update是一样的
Awake() Start() : 都是在游戏物体初始化运行一次,但是Awake的运行顺序高于Start的,并且只要脚本中存在Awake方法,则无论是否挂载了该脚本都会执行该方法
OnEnable(): 当将物体的SetActive设置为true时就会自动调用调用该方法
OnDisable():当将物体的SetActive设置为false时就会自动调用该方法。
OnDestory(): 当关闭游戏则会调用该方法
OnApplicationPause():当游戏暂停时使用
OnApplicationQuit():当退出游戏时被调用,所有的游戏物体被销毁。
OnApplicationQuit()→OnDisable():→OnDestory()

2、Time时间类函数(都是静态类):

Time.time 表示从游戏开发到现在的时间,会随着游戏的暂停而停止计算。
Time.timeSinceLevelLoad 表示从当前Scene开始到目前为止的时间,也会随着暂停操作而停止。
Time.deltaTime(增量时间,重点理解) 表示从上一帧到当前帧时间,以秒为单位。【一般用来控制角色、动画的运动】
Time.fixedTime 表示以秒计游戏开始的时间,固定时间以定期间隔更新(相当于fixedDeltaTime)直到达到time属性。
Time.fixedDeltaTime 表示以秒计间隔,在物理和其他固定帧率进行更新,在Edit->ProjectSettings->Time的Fixed Timestep可以自行设置。
Time.SmoothDeltaTime 表示一个平稳的deltaTime,根据前 N帧的时间加权平均的值。
Time.timeScale 时间缩放,默认值为1,若设置<1,表示时间减慢,若设置>1,表示时间加快,可以用来加速和减速游戏,回放等、非常有用。如果游戏中控制运动的都是使用了Time.deltatime的话,则可以通过设置Time.timeScale=0来暂停其运动等。
Time.frameCount:: 游戏开始后计算总帧数。
Time.realtimeSinceStartup 表示自游戏开始后的总时间,即使暂停也会不断的增加。【一般用作性能测试】
一般写在程序的上下端用来测时时间。
在这里插入图片描述
Time.captureFramerate 表示设置每秒的帧率,然后不考虑真实时间。通过设置帧的速率获取截图。
Time.unscaledDeltaTime 以秒计算,完成最后一帧的时间 不考虑timescale时候与deltaTime相同,若timescale被设置,则无效。
Time.unscaledTime 从游戏开始到现在所用的时间 不考虑timescale时候与time相同,若timescale被设置,则无效。
Time,timeScenelevelload:从场景开始加载开始计时,当游戏切换场景时重新计时。
Time.smoothDeltaTime:使帧之间的切换时间趋于平缓。

3、GameObject类:

【1】、创建游戏物体的三种方法:

通过其构造器来创建 GameObject go=new GameObejct(“游戏物体名”); //一般是用来创建空的游戏来存放其他东西的。
Instantiate GameObject.Instantiate(prefab,transform.position,transform.rotation) //根据Prefab或者是另外一个游戏物体来创
(克隆Colon),可以实例粒子、等其他的游戏物体,很是常用的
CreatePrimitive GameObject.CreatePrimitive(PrimitiveType.**) //创建原始的游戏物体,基本的几何体.(胶囊体,正方体等)
Instantiate(克隆体,位置,角度,父对象)
在这里插入图片描述
【2】、 为游戏物体添加组件, 其中组件可以是我们自己自定义的脚本GameObject.AddComponent<组件名>
GameObject.AddCompont<类名>().类属性

【3】、属性、变量:

GameObject.activeInHierarchy 游戏物体是否处于激活状态,与父类有关,父类被取消激活,则子类的activeInHierarchy为false
GameObject.activeSelf 自身的激活状态,与父类无关,只与自身有关。【控制组件的激活与取消激活则使用.enable=false/true】
GameObject.tag 游戏物体的tag标签,具体的由程序员自定义设置
GameObject.SetActive(false/true) 通过参数的控制来设置其游戏物体的激活状态,true为激活状态,反之为取消激活状态。
Destory(组件名/叫本名):用于移除组件或者脚本

【4】、UnityEngine.Object中的共有方法与变量
name: 名字,调用该变量,则无论是通过GameObject还是Component都是返回游戏物体的名字
Destroy() :删除游戏物体,但是不会立马在unity中删除,而是会先进行回收,在释放资源。
Destory()方法可以删除游戏物体,组件,和延迟销毁,相对于下一个删除方法,调用该方法不会立即从内存中释放资源,需加载到第三个场景左右才会在内存中释放资源。

DestoryImmediate():执行对象立刻被销毁,直接从内存空间中销毁对象,非紧急情况下不建议使用,容易造成空对象。
DontDestroyOnLoad() : 当加载新的场景的时候,,当某个游戏物体调用该方法时。不删除这个场景中的这个游戏物体,常用于共享游戏物体
FindObjectType<>:按照类型来查找游戏对象,如Text类型,查找结果返回任意一个。不查找未激活的游戏对象
FindObjectsType<> : 通过类型来进行查找,是进行全局的查找,则就是在整个场景中进行查找,用数组保存。
FindGameObjectWithTag :如果查到的是多个,则只返回查找到的第一个
FindGameObejctsWithTag: 返回查找到的游戏物体集合,用数组保存返回值。
CompareTag();通过对象调用该方法,该方法用于比较游戏物体的标签.
两种写法的效果是相同的,但第二种方法更加快速与便捷

 if(other.gameobject.tag == "Cube")
 if(other.CompareTag("Cube"))

【5】、消息的发送(目的是调用某个方法)
BroadcastMessage() 广播发送消息,则该物体上对应的方法会被调用,同时这个游戏物体上的子物体上对应的方法也会被调用的,三个参数(“游戏名”,传值,如无对象是否报错)

GameObject.BroadcastMessage("方法名",null/需要传入的参数,SendMessageOptions.RequireReceiver/SendMessageOptions.DontRequireReceiver);

SendMessage() 发送消息,只会对这个游戏物体中脚本上的方法发送消息
SendMessageUpwards() 广播发送消息,但是和BroadcastMessage()是相反的,在调用自身的方法时也会向上传递,调用其父类的方法

【6】、游戏组件的查找

Cube cube = target.GetComponent(); 返回一个对应的组件,如果有多个,则只返回第一个
Cube[]cc= target.GetComponents(); 返回该游戏物体上所有符合条件的组件,返回一个组件数组
Cube[] xx = target.GetComponentsInChildren(); 返回该游戏物体上的对应组件,同时返回该游戏物体的子类上对应的组件
Cube[] yy = target.GetComponentsInParent(); 返回该游戏物体上的对应组件,同时返回该游戏物体的父类上对应的组件

4、MonoBehaviours的类:

【1】、继承的变量成员

enabled: 返回该组件是否被激活或者是被禁用,可以通过该变量来进行设置,脚本禁用的是脚本中的Update()方法.
isActiveAndEnabled: 只能返回该组件是否激活的标志位,不能设置该变量,为只读的
tag :该组件所对应的游戏物体的标签
name :该组件所对应的游戏物体的名字
【2】、
Invoke等方法、变量:将添加要调用的方法添加到等待队列中,然后等待用户设定的时间后,进行队列中的方法调用。
Invoke(“方法1”,float time): 在等待time的时间后调用方法1
bool i= IsInvoking(“方法1”) 返回bool值,如果方法被添加到队列中,但没有被运行则返回true,如果经过一段时间后该方法被调用了则会返回false;
InvokeRepeating(“方法1”,time,number): 等待time时间后,会重复开始运行方法1,每秒钟运行number次。
CancelInvoke() 会暂停通过Involve/InvokeRepeating 调用方法的运行,但是一般来说CancelInvoke会和InvokeRepeating组合调用。参数由自己设定
print()方法:用来输出结果

扩充: 在脚本的类前添加[ExecuteInEditMode]:则该脚本不用按游戏运行按钮就会开始编译,只限在编辑模式里面
在脚本的共有变量前添加[HideInInspector]:则该共有变量不会在Inspector面板进行显示

5、Coroutines:协程:

1、定义协程:IEnumerator 方法名()
{
yield return 0/null ;
yield return new WaitForSeconds(1.0f); //等待一定时间在运行下面的代码
}
2、开启协程:StartCoroutines(方法名());
说明:协程开启会继续执行下面代码,不会等协程方法运行完再执行接下来的方法

3、开启与关闭协程时,StartCoriutine(参数)、StopCoroutine(参数) 其中的参数要互相对应,如果传递的是方法名,则两个方法中的参数就要是方法名,如果是IEnumerator的返回值,则其中两个方法发的参数就要是IEnumerator的返回值
1、 private IEnumerator coroutine;
coroutine = WaitAndPrint();
StartCoroutine(coroutine);
StopCoroutine(coroutine);

2、StartCoroutine(“WaitAndPrint”);
StopCoroutine(“WaitAndPrint”);

3、StartCoroutine(WaitAndPrint())时,是无法直接使用结束进程的方法去结束协程
4、StopAllCoroutines() 停止所有的协程,不管你是怎么调用的

6、OnMousexx鼠标触发事件: 如果是通过Collider进行触发检测的话,则要在设置中打开允许进行射线检测。

OnMouseDown(): 当鼠标按下的时候触发,按一次触发一次
OnMouseDrag(): 当鼠标按住不放的时候一直触发,是每一帧进行触发
OnMouseUp(): 当鼠标抬起的时候触发,只执行一次
OnMouseEnter(): 当鼠标进入的目标物体时候触发,进入一次触发一次
OnMousetOver(): 当鼠标在触发物体的上面时,则一直触发
OnMouseExit(): 当鼠标移出的时候触发
OnMouseUpAsButton() 相当于是按钮的功能,当鼠标在同一个游戏物体上按下抬起的时候才会触发,按下与抬起不在同一个游戏上的话则不会进行触发。

7、Mathf类:所有的成员均为静态的
Mathf.Abs() 返回绝对值的
Mathf.Ceil() 向上取整的,10.1—>11 -10.9→-10
Mathf.ceilToInt ()向上取整, 返回值为Int类型
Mathf.Clamp(value,min,max) 如果value的值在min–max之间的话就返回value,但是如果value的值小于min,则返回min,如果value的值大于max,则返回max,一般是用在控制角色血量,当玩家的血量减少的时候,不会出现出现低于0和大于100的情况 hp= Mathf.Clamp(hp,0,100);
Mathf.Clamp01(hp): 方法设置最大值和最小值分别为1和0.
Mathf.ClosePowerOfTwo(value): 返回距离value最近的2的次方数。

// prints 8
Debug.Log(Mathf.ClosestPowerOfTwo(7));

Mathg.DeltaAngke: 取得两个角度之间的最小夹角
Mathf.Floor ():向下取整 10.7→10, -10.7→-11
Mathf.Pow(i,j) 取得 i 的 j 次方
Mathf.Max(a,b):自动计算a,b中的最大值
Mathf.Min(a,b):自动i就算a,b中的最小值
Mathf.Sqrt(a):取得a的平方根, 4的平方根为2
Mathf.MoveToWards() 一般用来做移动控制,是匀速的运动,加速度固定的
Mathf.Lerp() 差值运算,一般是用来控制动画、运动,越往后运行的越慢的。
Mathf.PingPong(t,maxValue) 类似乒乓球的来回运动,起始 值是0,通过t变量来控制值由0向maxValue移动,当t大于maxValue的时候又向0进行移动,然后就这样的来回往复运动,一般t变量用时间Time.deltatime来进行控制的。

8、Input输入类:
GetKey() 按键一直按着时触发
GetKeyDown 按键被按下那一刻进行触发
GetKeyUp 按键被按下后抬起时触发

GetMouseButton(0/1/2) 1:左键 2:右键 3:中键 鼠标一直按着时触发
GetMouseButtonDown() 鼠标按下那一刻触发、
GetMouseButtonUp() 鼠标抬起的那一刻时触发

Gettouch(): 获取触摸屏的控制
//设置虚拟按键,如Fire1等,可以修改虚拟按键的名称,使之更加的形象化
GetButtonDown()
GetButton()
GetButtonUp() 这三个的参数是用户自定义的虚拟按键进行触发,其他的和上面的一样

GetAxis(“虚拟轴名”) 通过按下的虚拟轴来返回-1~1之间的值,开始值是0,然后向-1/1进行渐渐的变化,有一定的加速度。一般用来控制运动的,比如是赛车的加速运动等
GetAxisRaw() 其他的和GetAxis差不多,就是少了渐变效果,返回值只有 0 1 -1三个

anyKeyDown 当任何按键被按下(包括鼠标按键)时返回true
anyKey 当任何按键被按着(包括鼠标)时返回true
mousePosition 返回鼠标在屏幕上的像素坐标,【屏幕坐标】z轴衡为0的

9、Vector2;二维向量

magnitude: 返回向量的长度
normalized; 返回这个向量长度为1的矢量,不管这个向量多长,也是返回1的矢量,只是返回值,不对原向量的值产生影响,当前向量是不改变,返回一个新的规范化的向量,规范化向量:向量坐标都除于向量的长度

Normalize() 无参数的,也是向量化,但是调用该方法会改变原向量值,使其的值被标准化。调用该方法是没有返回值的
ClampMagnitude() ;将一个向量限制在参数中指定的长度之间
MoveToWards() 用来做匀速的运动,由一个位置向另一个位置进行移动
sqrMagnitude 对求向量的的长度时不进行开平方根运算了,减少性能的损耗,一般是用来比较两个向量的长度大小的。
set():对向量进行赋值
Tostring() ;将向量转换为字符串输出
Angle(Vector3,Vector3):取得两个向量的夹角
lerp(a,b,t):向量插值运算,Vector2向量。先对a.x和b.x进行插值运算,后对a.y和b.y进行插值运算
Max(); 比较两个向量的长度,返回长度最大的的向量
Min(): 与Max()方法同理
MoveToWards(); 可以设置向量向目标向量进行匀速运动
其他的参考API文档即可,较为简单。
扩充:向量是结构体,为值类型,修改其中的变量的时候要整体进行修改,不能单独的进行单个变量的赋值修改

10、Vector3:三维变量
Cross() 叉乘运算【左手法则】,通过两个向量来获得另一个(垂直)向量的方向,然后进行相关的判断
Dot():点乘运算

Project() 投影运算

Reflect() 反射运算
Slerp() 按照角度进行插值,与lerp的按照位置信息进行插值的,一般用在炮台的旋转,使旋转的更加平滑

11、Random随机数类:

Random.Rage(x,y):最小值为x,最大值为y-1.该函数不包含以写的最大值(当Y为整数时)
当Y为小数时,返回x,y之间的小数,不包含x。也不包含Y
InitState(): 通过参数指定的种子,然后再调用Range()产生随机数的时候会依据种子来进行生成,则每一次运行所生成的随机数都是一样的,是伪随机数。一般要生成的随机数不同,可以设置参数为System.DataTime.Now.Ticks:通过时间戳来完成

insideUnitFCircle :在单位为1的园内随机生成一个位置信息,如果要在更大的圆中生成,则可以在后面圆的半径信息。一般用来控制随机生成敌人的位置信息
insideUnitSphere: 在单位为1的球内随机生成一个位置信息,如果要在更大的球中生成,则可以在后面
圆的半径信息。

Random.value(): 返回0到1的之间的小数
Random.state: 保存随机数序列当前的状态
Random.insideUnitCircle :圆心为(0,0)
Random.insideUnitSphere :单位球内.球星为
12、四元数 Quaternion:

欧拉角【eylarAngles】与面板中的值对应和四元数【rotation】之间是可以进行转换的,一般欧拉角是用来让用户可以直观的看到的,而四元数是用来控制内部的运算 的。

eulerAngles 将四元数转变为欧拉角

GameObject.eulerAngles = new Vector3(x,y,z); x,y,z是角度

Euler() 将欧拉角转变为四元数

GameObject.rotation = Quaternion.Euler(new Vector3); 将欧拉角转换为四元数

.LookRotation() 让玩家通过设置四元数来进行望向敌人的旋转,将向量方向转变为四元数

Vector3 Direction = enemy.position - player.position;
player.rotation = Quaternion.LookRotation(Direction); 将欧拉角转化为四元数

Vector3 temp = enemy.position - player.position; //获得两个位置信息之间的变量,是主角望向敌人,所以要设置向量的方向是指向敌人的
enemp.y = 0; //如果不想主角在望向他的时候出现低头的情况,也就是y轴的值出现了变化了。
player.rotation= Quaternion.LookRotation(temp);
slerp() 在做朝向的旋转的时候,不建议使用lerp,而是建议使用slerp,使其的旋转朝向更为平滑,更加的自然

Vector3 temp = enemy.position - player.position
Quaternion target= Quaternion.LookRotation(temp);
player.rotation = Quaternion.Slerp(player.rotation, target, Time.deltaTime); //插值的缓慢旋转

13、Rigidbody:刚体组件,控制角色的移动
.position: 可以通过刚体来控制运动,在控制运动方面,使用rigibody.positon比transform.porition计算要快的多,相关的物理计算也是在刚体中计算好了,但是不建议使用这个方法来持续的控制物体的运动,不平滑,控制一两次的时候还可以使用
MovePosition() 对position的优化,其中利用了插值运算,一般持续运动的则使用这个方法,不出现卡顿的现象
,rotation:
MoveRotation 用来控制刚体的旋转的,一般不建议使用rotation,比较耗性能,建议使用MoveRotation(),然后配合Quaternion.slerp()进行使用,使其更加的平滑

Rigidbody.MoveRotation(Quaternion.lerp(Rigidbody.rotation,target.rotation,Time.deltaTime));

AddForce() 为刚体添加力,一般可以用在赛车游戏中,当进行短时的加速则可以给以限定时间的AddForce方法
AddForce()方法:需要方向和力的大小

Rigidbody.AddForce(Vector3.Forward * power );

14、Camera;相机组件:
当相机的标签是main cream时,可以通过Camer.main来进行主相机cream组件的查找射线,用来检测鼠标在屏幕上的位置信息,以及触碰到什么
Ray ray = cameraMain.ScreenPointToRay(Input.mousePosition); //将屏幕坐标转化为射线
RaycastHit hit; //用来存放射线检测到的游戏物体的信息的
bool temp = Physics.Raycast(ray, out hit); //进行射线检测
Debug.DrawRay() 方法,绘制可视射线
Camera.main: 相当于设置为GetComponet()
当场景中有多个相机的标签设置为MainCamera,则main Camera只会获取第一个

  Ray ray = mainCamera.ScreenPointToRay(new Vector3(200, 200, 0));
  Debug.DrawRay(ray.origin, ray.direction * 10, Color.yellow);
  //ray.direction * 10 在此方向上延伸的长度的倍数

详细的摄象机的属性请看:
摄象机属性


15、Application SreeamingAcsets: 该文件下的资源不会被压缩,导入是什么类型还是什么类型,【主要是音频、视频资源】,只要创建的文件名为SreeamingAcsets的文件夹,资源在此文件夹下就不会自动压缩

dataPath: 工程文件路径,输出工程完整的路径。
streamingAssetsPath: 可以通过文件流来进行读取的文件路径

流媒体(streaming media)是指将一连串的媒体数据压缩后,经过网上分段发送数据,在网上即时传输影音以供观赏的一种技术与过程,
此技术使得数据包得以像流水一样发送;如果不使用此技术,就必须在使用前下载整个媒体文件。

persistenDataPath :可以实例的文件路径
tempporaryCachePath :临时的文件路径

Application.OpenURL("") 打开指定的网址,在双引号内输入完整的网址
Application.Quit() 退出游戏的运行,只有Bulid出后的场景才可以使用,一般用开关设置
.CapturScreenshot(“游戏截图”) 用来截图的,字符串为截图fileName

Application.identifier 标识名
.companyName 公司名
productName 产品名
instalMode 安装包名
isEditor 是否在编辑器模式
isFocused 是否在焦点
isMoliePlatform 是否是移动平台
isPlaying:判断程序是否在运行
isWebPlayer :判断程序是否在网页平台上运行
platform :编辑器的平台
unityVersion: unity版本号
version :项目文件版本号
runInBackground 是否可以在后台运行

UnityEditor.EditorApplication.isPlaying=false; //在编辑器模式下推出编辑状态,相当于Application.Quit();

16、SceneManager场景类

SceneManager.LoadScene() 加载下一个场景,一般是用在另一个场景不是太大的情况下,参数为场景索引号或者场景的名称
SceneManager.LoadSceneAsync() 异步加载下一个场景,返回AsyncOperation类型,里面包含了加载的信息,加载的进度条等等。可以让用户缓解等待加载场景的时间
sceneCount :计算当前获得当前加载的场景个数
sceneCountInBuildSettings 在Build面板中加载的场景个数,已加载场景的个数
GetActiveScene() 获取已经加载的当前场景的信息。如场景的名字,时间等
GetSceneAt(index): 加载index索引的场景,Build中的索引号

当加载新的场景的时候会触发下面的事件:
activeSceneChanged 当有新场景被加载的时候就会调用这个事件
sceneLoaded 当有新场景加载完成的时候就会触发这个事件

SceneManager.GetSceneByBuildIndex(0).name; //输出加载该索引场景的场景名字

扩充:事件的场景的加载时通过该方法来进行加载的:
SceneManger.activeSceneChanged+=OnAcitiveScenenChanged;

17、射线检测:一般射线检测要在射线检测的范围内,
并且被检测物体要有Collider,射线检测范围内不要被自身的碰撞体所影响

Ray ray=new Ray(起点,方向);
PaycastHit hit; //hit中存放的是射线检测的碰撞信息
bool temp=Physics.Raycast(ray,out hit); //具体的重载方法边用边查。需要检测的射线和输出该射线碰撞到的物体信息
Debug,log(hit.Collider) //用hit.Collider代替hit.collider.gameObject 防止空指针异常
Physics.Raycast 方法具有16个重载方法,不同情况下使用不同的参数,有最大距离,方向,层级等。

Ray ray = new Ray(this.transform.position + transform.forward, transform.forward); //创建射线
Bool isCollider = Physics.Raycast(ray,out hit); //检测碰撞信息
RaycastHit hit;                  //存储射线检测到的游戏物体信息
if(Physics.Raycast(ray,out hit)) //通过返回值来判断射线是否检测到相关的物体了
{
Debug.Log(hit.collider.gameObject.name);
}

bool isCollider  = Physics.Raycast(ray,Mathf.Infinity,layerMask.GetMask("Enmy"));

扩充:
Raycast;检测的是射线碰撞到的第一个物体,不具有穿透性
RaycastAll:返回的是RaycastHit数组,具有穿透性,可以返回检测到的多个游戏物体的信息。


18、代码监听触发事件:

().onClick.AddListener(方法名); //当触发button组件,则会触发指定的方法名的方法

GameObject.getComponet<Button>().Onclick.AddListener(this.ButtOnClick(直接写方法名,不用加括号));
GameObject.getComponet<Slider>().OnValueChanged.AddListener(this.OnSliderChange(直接写方法名,不用加括号));

通过实现接口来注册监听事件: using UnityEgine.EventSystems; 导入命名空间

IPointerDownHandler 鼠标按下的事件,具体的接口参考手册,在蛮牛手册上查询事件
拖拽事件

public class API02 : MonoBehaviour,IPointerDownHandler(调用接口) 
{
    public void OnPointerDown(PointerEventData eventData)
    {
        Debug.Log("点击输出");
    }

在这里插入图片描述

Raycast Target: 如果取消勾选则不做事件监听了,则无法实现检测了,接口检测是通过射线检测的,所以默认要勾选

19、www类,下载 是用来在网络中下载资源的,

public string url = “http://img.taopic.com/uploads/allimg/120727/201995-120HG1030762.jpg”;
IEnumerator Start()
{
WWW www = new WWW(url);
yield return www;
Renderer renderer = this.GetComponent();
renderer.material.mainTexture = www.texture;
}

20、Touches触摸事件(常用于手机上):

Input.touches: 返回放在屏幕上的手指信息,返回数组
Touch touch1=Input.touches[0];
touch1.position;
TouchPhase pahse=touch1.phase phase 是用来返回手指的状态的
推荐使用插件EasyTouch来使用Touch事件

21、Debug.DrawRay(ray.oridin,ray.direction) 绘制射线,第一个参数是原点,第二个是方向

22、CharacterController角色控制器

.SimpleMove(【vector3】) 简单移动
.isGrounded 判断是否到地面上,bool值
.Move() 与simpleMove的区别是要*Time.deltatime、而且simpleMove会使用自带的重力
OnCOntrollerColliderHit(ControllerCollidrHit hit) 当有碰撞到其他的碰撞器的时候会触发这个事件函数【hit保存碰撞到的物体信息】

23、Mesh的设置:

mesh:设置模型的渲染效果和框架

GetComponent<MeshFilter>().mesh = mesh;
GetComponent<MeshFilter>().sharedMesh = mesh;
//mesh属性和Sharemesh属性的区别在于mesh是直接实例化一份渲染材质,而sharemesh是直接调用渲染材质

material mesh指定人是什么样子的,material指定人的肤色是什么样子的

 private Material meshren;
 meshren = GetComponent<MeshRenderer>().material; //获取材质

24、Unity持久化存储之PlayerPrefs的使用:
unity3d提供了一个用于本地持久化保存与读取的类——PlayerPrefs。工作原理非常简单,以键值对的形式将数据保存在文件中,然后程序可以根据这个名称取出上次保存的数值。
一、PlayerPrefs类支持3中数据类型的保存和读取,浮点型,整形,和字符串型。
   分别对应的函数为:

SetInt();保存整型数据;
GetInt();读取整形数据;
SetFloat();保存浮点型数据;
GetFlost();读取浮点型数据;
SetString();保存字符串型数据;
GetString();读取字符串型数据;

注:这些函数的用法基本一致使用Set进行保存,使用Get进行读取。
  通过key关键值来存储所需要的数值
二、使用
  PlayerPrefs.SetString("YourKey", "Your_Value");
  这个方法中第一个参数表示存储数据的名称,第二的参数表示具体存储的数值。

MyValue=PlayerPrefs.GetString("YourKey");
  这个方法中第一个数据表示读取数据的名称,本来还有第二的参数,表示默认值,如果通过数据名称没有找到对应的值,那么就返回默认值,这个值也可以写,则返回空值。

三、补充

在PlayerPrefs 类中还提供了

PlayerPrefs.DeleteKey (key : string)删除指定数据;
PlayerPrefs.DeleteAll() 删除全部键 ;
PlayerPrefs.HasKey (key : string)判断数据是否存在的方法;

25、API变更:

弃用:Application.LoadLevel();
新的:SceneManager.LoadScene(); 加载新的场景
弃用
新的:Scene scene=SceneManager.GetActiveScene(); //获得当前活动场景的信息
SceneManger.LoadScene(scene.buildIndex) //重新加载当前场景

OnLevelWasLoaded() 当场景被加载的时候调用,被弃用了
改成事件了:sceenLoaded

粒子效果的访问的属性进行了修改,详情请看蛮牛手册
原文链接:https://mp.csdn.net/mdeditor/90737353#

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity3D中常用API包括Component、Transform、GameObject、Object和Time等。\[1\]这些API可以用于处理游戏对象的组件、变换、实例化和销毁等操作。例如,可以使用Component来获取和管理游戏对象的组件,使用Transform来控制游戏对象的位置、旋转和缩放,使用GameObject来创建、查找和销毁游戏对象,使用Object来处理资源的加载和释放,使用Time来获取游戏的时间信息。此外,还有一些常见的API函数,如Instantiate函数用于实例化预制件,Start函数和Update函数用于处理游戏对象的初始化和更新等。\[2\]\[3\]这些API和函数是Unity开发中经常使用的工具,可以帮助开发者实现各种功能和效果。 #### 引用[.reference_title] - *1* [Unity3D数字孪生笔记——Unity常用API篇](https://blog.csdn.net/Lcl_huolitianji/article/details/120875486)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Unity3D常用API](https://blog.csdn.net/u011360242/article/details/77046732)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [【Unity 3D】常见API的讲解以及在C#脚本中的执行(附源码)](https://blog.csdn.net/jiebaoshayebuhui/article/details/128510864)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值