一. 常用API
- 核心类图
2.核心类图展开图
三. Component 组件类功能
- 变量:(物体、标签、和位置组件)
2. 获取组件的方法:(返回该组件对应的数据类型的数据)
GetComponent<MeshRenderer>()3. 获取所有组件的方法:(返回一个组件集合(列表))
Component[] coms= GetComponents<Component>();4. 获取后代物体的指定类型组件,(从自身开始找)
var coms = this.GetComponentsInChildren<MeshRenderer>();
var com1 = this.GetComponentInChildren<MeshRenderer>();5. 获取父类物体的指定类型组件,(从自身开始找)
MeshRenderer[] coms = this.GetComponentsInParent<MeshRenderer>();
MeshRenderer com1 = this.GetComponentInParent<MeshRenderer>();6. 物体是否加了“?”tag标签 (返回布尔值)
CompareTag("Player");四.Transform 变换组件
- 每一个物体都有一个transform组件,用于操控 位置 旋转 缩放
- 遍历物体的transform组件就会拿到其子物体的transform组件
3. 变量
① position
② localPosition
③ lossyScale //物体与本身模型的缩放比例(只读)
④ localScale
4. Translate 移动
transform.Translate(0,0,1); //沿自身方向移动
transform.Translate(0,0,1,Space.World); //沿世界方向移动5. Rotate 旋转
transform.Rotate(0,0,10); //沿自身方向旋转
transform.Rotate(0,0,20,Space.World); //沿世界方向旋转6. RotateAround 绕轴旋转 //RotateAround(绕的点,绕点的哪个轴,旋转度数)
transform.RotateAround(Vector3.zero,Vector3.up,1);7.root 获取根物体的Transform组件
Transform i=transform.root;8. parent 获取父物体 (只读)
Transform i=transform.parent;9. 设置父物体
public Transform tf;
transform.SetParent(tf); //以自己的世界坐标为准,找爸爸后,位置不会移动
transform.SetParent(tf,false); // 以transform为准,找爸爸后,位置按transform移动到爸爸身边10.根据名称获取子物体
Transform ts1=transform.Find("Cube6");11. 根据索引获取子物体
int count=transform.childCount;
for(int i=0;i<count;i++){
transform.GetChild(i);
}12. 解除子对象
13. 获取兄弟索引
14. 设置兄弟间索引
SetSiblingIndex(int);15. 将物体变换移动到兄弟列表最前面,做长子
16. 将物体变换移动到兄弟列表最后面,做幼子
五. GameObject 组件
场景里的实体都是 GameObject 此外,GameObject类对象是可以new的。
- 变量:
① 自身激活状态 //自身激活状态
② 实际激活状态 //可能自身激活,但父物体禁用,导致自己被禁用
2.方法:
① 设置激活状态
② 给物体添加组件
this.gameObject.AddComponent<Light>();③ 根据物体找组件
④ 根据组件找物体
GameObject obj1= transform.gameObject;⑤ 根据物体名称查找物体(消耗大量性能,慎用).
⑥ 根据标签找物体, //返回GameObject数组
⑦ 根据标签找单个物体
六. Object 组件
1. 属性
2.方法
①删除游戏对象\组件\资源
Destroy(gameObject,5); //5秒后删除对象② 转换场景不删除对象
使用:
③ 根据类型找对象
④ 根据类型找对象集合
⑤ 克隆物体
附:
1.递归查找子物体方法
using UnityEngine;
using System.Collections;
/*
参数1: 某个transform对象
参数2: 要查找的子元素名字
返回: 找到返回该transform对象 找不到返回null
*/
/// <summary>
///递归查找子物体
/// </summary>
public class findchlid7 : MonoBehaviour
{
Transform Find7(Transform ts ,string str){
if(ts.Find(str)!=null) return ts.Find(str);
else
{
int count=ts.childCount;
for(int i=0;i<count;i++){
if(Find7(ts.GetChild(i),str)!=null) return Find7(ts.GetChild(i),str);
}
}
return null;
}
private void OnGUI() {
if(GUILayout.Button("递归查找子物体")){
Find7(transform,"Cube7").GetComponent<MeshRenderer>().material.color=Color.green;
}
}
}2. 查找敌人最低HP血量的物体
①创建Enemy对象
using UnityEngine;
using System.Collections;
public class Enemy : MonoBehaviour
{
[Range(0,100)]
public int Hp;
}②创建脚本搜索低血量物体
using UnityEngine;
using System.Collections;
/*
*/
/// <summary>
///
/// </summary>
public class FindEnemy : MonoBehaviour
{
public Enemy[] enemys;
void OnGUI()
{
if(GUILayout.Button("min--red")){
enemys=FindObjectsOfType<Enemy>();
Enemy min=FindMin();
min.GetComponent<MeshRenderer>().material.color=Color.red;
print(min.Hp);
}
}
Enemy FindMin(){
Enemy min=enemys[0];
for(int i=0;i<enemys.Length;i++){
if(enemys[i].Hp<min.Hp){
min=enemys[i];
}
}
return min;
}
}