Unity笔记随笔二

一个游戏由多个场景Scene(2D/3D)组成

一个场景由多个游戏对象组成

一个游戏对象由多个组件组成

Debug.Log("Hello World Unity……");

//查找其他游戏对象(通过游戏对象的名称找对象)
//缺点1:如果出现重名,可能找不到想要的哪个对象
//缺点2:如果对象很多,消耗性能
GameObject player = GameObject.Find("Player");

//找其他游戏对象(通过游戏对象的名称找对象)
//缺点:如果出现重名,可能找不到想要的哪个对象
//优点:不消耗性能
GameObject cat = GameObject.FindWithTag("Cat");

//找其他游戏对象(通过游戏对象的名称找对象) FindGameObjectsWithTag 和 FindWithTag 作用一样
GameObject[] catTest = GameObject.FindGameObjectsWithTag("CatTest");


#region MyRegion
// Debug.Log("activeSelf" + gameObject.active); //弃用

//设置游戏对象的激活状态
gameObject.SetActive(true);
//给当前游戏对象添加组件
gameObject.AddComponent<HelloWorld>();

//获取组件
MeshRenderer meshRenderer= gameObject.GetComponent<MeshRenderer>();
//修改组件属性或者调用组件方法
meshRenderer.material.color = new Color(0.5f, 0.5f, 0.5f);



//通过标签找对象
GameObject player = GameObject.FindWithTag("Player");

//找组件
MeshRenderer meshRenderer = player.GetComponent<MeshRenderer>();

//实现功能
meshRenderer.material.color = Color.yellow;


Debug.Log("当前游戏对象的世界坐标:"+this.transform.position);

Debug.Log("当前游戏对象的相对父物体坐标(本地):" + this.transform.localPosition);

//欧拉角
Debug.Log("当前游戏对象的世界旋转:" + this.transform.eulerAngles);

Debug.Log("当前游戏对象的本地旋转:" + this.transform.localEulerAngles);


//四元素
Debug.Log("当前游戏对象的世界旋转四元素:" + this.transform.rotation);

Debug.Log("当前游戏对象本地旋转的四元素:" + this.transform.localRotation);

//位置移动方法
//this.transform.Translate(new Vector3(0,0,3));
this.transform.position += new Vector3(0, 0, 0.3f);

//旋转【自转】
//this.transform.Rotate(new Vector3(2, 0, 0));
this.transform.eulerAngles += new Vector3(2, 0, 0);

//旋转【绕转】
this.transform.RotateAround(new Vector3(2, 0, 0), new Vector3(0,1, 0),30);

//让当前对象朝自己的上方移到
// transform.forward;//自身前方的方向向量
// transform.up;//自身上方的方向向量
// transform.right;//自身右方的方向向量
//反方向前面添加“-”

#region 父子关系
//当前对象,获取或者设置父对象
//如果当前对象没有父对象,则parent为null
Debug.Log("父对象为 :" + transform.parent);

//当前对象,获取根对象
//如果当前对象没有父对象,则parent为自己
Debug.Log("父对象为 :" + transform.root);

//设置父对象[照相机设置为父对象]
transform.SetParent(Camera.main.transform);

//获取当前对象的子对象个数
Debug.Log(transform.childCount);

//获取当前对象的子对象
Debug.Log(transform.GetChild(0));
Transform obj = transform.GetChild(0);
Debug.Log("子对象:" + obj);
//遍历所有子对象
for (int i = 0; i < transform.childCount; i++)
{
    Debug.Log(i + "的子对象为:" + transform.GetChild(i));
}

//找对象(但这个对象是“我”的子对象)
Transform sonObj = transform.Find("ObjectName");

//按照层级查询对象=>Xpath
var aaa = transform.Find("aa/aaa");

#endregion


#region MyRegion
Vector3 vector = new Vector3(1, 1, 1);

// vector=new Vector3(3,vector.y,vector.z);    
vector.x = 3;
//返回一个向量的标准化向量 
var normalized = vector.normalized;
//打印向量的模
Debug.Log("向量的模1:" + vector.magnitude);
//使当前向量变成一个单位向量
vector.Normalize();
//打印向量的模
Debug.Log("向量的模2:" + vector.magnitude);


//var sss= Vector2.SqrMagnitude(vector);
#endregion

#region Static

//Vector3.forward、Vector3.up、Vector3.right、Vector3.left

//new Vector3(1,0,0)=>Vector3.right

// new Vector3(0, 0, 0);==>Vector3.zero;

//new Vector3(1,1,1) =>Vector3.one
//求两点间的距离
var dis = Vector3.Distance(Vector3.right, Vector3.forward);
//求两个向量的夹角 返回一个角度,正数
var angle = Vector3.Angle(Vector3.one, Vector3.forward);
var angle01 = Vector3.Angle(new Vector3(1,1,0), new Vector3(1, -1, 0));
var angle02 = Vector3.Angle(new Vector3(1, -1, 0), new Vector3(1, 1, 0));

Debug.Log("angle01=" + angle01+ ",angle02=" + angle02);
//求两个向量的叉乘(左右)
var nomalCross = Vector3.Cross(Vector3.forward, new Vector3(1, 1, 0));
//求两个向量的点乘(前后)
var dot =Vector3.Dot(Vector3.forward, Vector3.right);
//插值
var lerpPos = Vector3.Lerp(Vector3.zero, Vector3.right * 3, 0.5f);

Debug.Log("lerpPos=" + lerpPos);
//执行放在Update执行
transform.position = Vector3.Lerp(transform.position, Vector3.right * 3, 0.1f);

#endregion
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值