目录
一.什么是组件
二.脚本组件
1.新建脚本
2.添加脚本
3.新建代码脚本详情
三.常用API
1.Vector3
2.Quaternion
3.Debug
四.下一章继续API详解
空对象
我们创建一个空对象,就只带一个"Transform"(包含物体的位置,旋转,缩放 基础信息)组件.按我的理解组件就是功能,比如想添加摄像机功能,就是在添加摄像机组件,想要平行光功能,添加平行光组件.
Unity内置了很多功能,后面用到在详细的说明.这些组件也都是代码写成的.
开始我们这章的主要目的脚本组件.
第一种是点击添加组件按钮,输入新的名字,回车.
第二种是在文件夹,右键,然后左键点击创建,C#脚本.
第一种是鼠标左键按住脚本,拖动到要添加的物体上,第二种是点击添加组件按钮,找到新建的脚本组件.
ps:只有继承MonoBehaviour的才能挂载到物体上,
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Test : MonoBehaviour
{
//最早调用
private void Awake()
{
}
//组件激活时调用(首次运行会在Awake后调用一次)
private void OnEnable()
{
}
// Start在第一帧更新之前被调用(在OnEnable后,Update前调用一次)
void Start()
{
}
//固定频率调用,可在unity是指
private void FixedUpdate()
{
}
// 每帧调用一次Update(用于实现一些实时变化的逻辑,如物体的移动旋转)
void Update()
{
}
//在Update调用后,紧接着调用一次(可用于一些物体位置刷新)
private void LateUpdate()
{
}
//组件未激活时调用
private void OnDisable()
{
}
//组件销毁时调用.
private void OnDestroy()
{
}
}
以上就是一些Unity封装的基础的生命周期方法,还有一些比如碰撞检测(物体接触,物体进入,物体离开等等)后续用在在详细展开.
ps:多个物体同时激活,脚本的Awake的顺序,可以在unity编辑器的设置里修改.(编辑->项目设置->脚本执行顺序)
既然脚本已经建好了,就可以写代码实现功能了,在介绍一些常用的API,让我们做功能时会事半功倍.
Vector3结构体由X,Y,Z三个值组成,一般用来表现物体的位置,旋转(为了避免万向锁,也用四元数表示,这里了解一下就行),缩放,也有Vector2(由X,Y两个值,用来对应2D物体的位置等等).
Vector3 vector3 = new Vector3(0,0,0);
Vector3.Normalize(vector3);//返回一个规范化向量
Vector3.Magnitude(vector3);//返回向量的模
Vector3.zero;//静态属性,返回Vector3(0,0,0)
Vector3.one;//静态属性,返回Vector3(1,1,1)
Vector3.forword;//静态属性,返回Vector3(0,0,1)
Vector3.back;//静态属性,返回Vector3(0,0,-1)
Vector3.left;//静态属性,返回Vector3(-1,0,0)
Vector3.right;//静态属性,返回Vector3(1,0,0)
Vector3.up;//静态属性,返回Vector3(0.1.0)
Vector3.down;//静态属性,返回Vector3(0,-1,0)
Vector3.Angle(Vector3 from,Vector3 to);//返回Vector3返回两个向量的夹角
Vector3.Distance(Vector3 A, Vector3 B);//返回Vector3返回两个点的距离
Vector3.Dot(Vector3 A, Vector3 B);//两个向量点乘
Vector3.Cross(Vector3 A, Vector3 B);//两个向量叉乘
Quaternion包含一个标量和一个三维向量,用于描述物体的旋转
Quaternion quaternion = new Quaternion(x,y,z,w);
Quaternion.identity //单位旋转,相当于无旋转
Quaternion.Angle(Quaternion a , Quaternion b) //返回两个旋转之间的角度
Quaternion.Euler(x,y,z) //通过欧拉角创建一个四元数
Quaternion.LookRotation(Vector3 forward , Vector3 upward) //返回forward向量与参数向量旋转相同的四元数
用于调试,在控制台输出语句.
Debug.Log("普通");
Debug.LogWarning("警告");
Debug.LogError("错误");
void Update()
{
Debug.DrawLine(new Vector3(0, 0, 0), new Vector3(0, 1, 0), Color.blue);//两点之间绘制直线
Debug.DrawRay(new Vector3(0, 0, 0), new Vector3(0, 0, 1), Color.red);//在起点和一个方向绘制直线
}