Component:提供了查找组件的功能(从自身、从后代、从先辈)。
GetComponent:获取当前物体其他组件类型的引用。
GetComponents:获取当前物体所有组件引用。
GetComponentsInChildren:查找指定类型组件(从自身开始,并搜索所有后代)
GetComponentInChildren:查找指定类型组件(从自身开始,并搜索所有后代,查找到第一个满足条件则结束)
GetComponentsInParent:查找指定类型组件(从自身开始,并搜索所有先辈)
Transform:提供了查找(根据名字、索引获取子物体)、移动、旋转、缩放物体的功能。
/*
Transform 类
-- Variables
childCount
localPosition:子物体相对于父物体坐标[编译器中显示的]
localScale:子物体相对于父物体的缩放比例[编译器中显示的]
lossyScale:(只读)可以理解为相对于模型的缩放比(父物体.localScale * 自身物体.localScale)
parent
position:相对于世界坐标系坐标
root
-- Public Functions
Find :通过名称查找子物体.
GetChild:根据索引获取子物体
LookAt
Rotate
RotateAround
SetParent
Translate
*/
//通过名称获取子物体变换组件引用(transform只能查找子类)
//this.transform.Find("子物体名称")
//备注:如果通过路径获取物体,那么路径一定不能发生改变
Transform childTF = this.transform.Find("子物体名称/子物体名称");
if (GUILayout.Button("获取所有子物体(孙子不要)"))
{
//写法1
int count = transform.childCount;
for (int i = 0; i < count; i++)
{
//根据索引获取子物体
Transform tf = transform.GetChild(i);
}
//写法2
foreach (var child in transform)
{
//child子物体变换组件
}
}
if (GUILayout.RepeatButton("自转"))
{
//按下按钮 沿Y轴旋转1度
transform.Rotate(0, 1, 0);//沿自身坐标轴
//transform.Rotate(0, 1, 0,Space.World);//沿世界身坐标轴
}
if (GUILayout.RepeatButton("移动"))
{
//移动
transform.Translate(0, 0, 1);//沿自身坐标轴
//transform.Translate(0, 1, 0,Space.World);//沿世界身坐标轴
}
if (GUILayout.Button("LookAt"))
{
//注视旋转 物体Z轴指向目标位置
transform.LookAt(targetTF);
}
if (GUILayout.RepeatButton("围绕旋转"))
{
// (围绕的目标点,围绕的轴向,围绕的角度)
transform.RotateAround(targetTF.position, Vector3.forward, 1);
}
if (GUILayout.RepeatButton("设置父物体"))
{
//将当前物体 设置为 targetTF 的子物体
transform.SetParent(targetTF);
player.transform.SetParent(newParent, false);// false时指自身相对父亲按原来相对世界(不归零)
//取消自己的父亲
transform.SetParent(null);
//删除自己的孩子
}
递归查找子物体
/// <summary>
/// 查找子物体(递归查找)
/// </summary>
/// <param name="trans">父物体</param>
/// <param name="goName">子物体的名称</param>
/// <returns>找到的相应子物体</returns>
public static Transform FindChild(Transform trans, string goName)
{
Transform child = trans.Find(goName);
if (child != null)
return child;
Transform go = null;
for (int i = 0; i < trans.childCount; i++)
{
child = trans.GetChild(i);
go = FindChild(child, goName);
if (go != null)
return go;
}
return null;
}
GameObject 类 提供全局查找物体,激活物体,添加组件
-- Variables
activeInHierarchy :理解为物体实际激活状态(物体自身被禁用或者父物体被禁用都为false)
activeSelf:物体在Inspector面板激活状态
layer
-- Public Functions
AddComponent:为游戏对象添加组件
SetActive
-- Static Functions
* Find :根据名称查找游戏对象(慎用,如同大海捞针)
* FindGameObjectsWithTag :获取使用指定标签的所有物体
* FindWithTag:获取使用标签的一个物体
Object类: 静态方法,更具类型查找物体
属性
name 名称.
静态方法
Destroy 删除物体.
DestroyImmediate 立即删除(慎用)
DontDestroyOnLoad Do not destroy the target Object when loading a new Scene.
FindObjectOfType 根据类型查找单个物体.
FindObjectsOfType 根据类型查找所有物体.
Instantiate 生成物体
总结:
* 如何查找某个组件引用
* Component 类
* -- 实例方法
* -- 查找当前物体其他类型组件引用
* -- 在先辈物体中查找指定类型组件引用
* -- 后代
*
* Transform 类
* -- 实例方法
* -- 通过名称查找子物体
* -- 索引
*
* GameObject 类
* -- 静态方法
* -- 通过标签查找物体(单个、所有)
* -- 通过名称找物体(慎用)
* -- 实例方法
* -- 查找当前物体其他类型组件
* -- 在先辈物体中查找指定类型组件引用
* -- 后代
*
* Object 类
* -- 静态方法
* -- 根据类型查找对象