1.transform组件是内置的组件,直接通过transform访问。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class NewBehaviourScript : MonoBehaviour
{
public float speed = 10;//运动速度
void Update()
{
transform.Translate(Vector3.forward * Time.deltaTime * 3, Space.World);//朝Z轴移动
}
}
脚本挂在需要操作的游戏物体上
2.通过
[组件类型] [变量]=GetComponent<组件类型>();
获取游戏物体自身组件,此时的变量为局部变量。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class NewBehaviourScript : MonoBehaviour
{
public float speed = 10;//运动速度
void Start()
{
Rigidbody rig = GetComponent<Rigidbody>();
rig.velocity = transform.forward * 0.5f * speed;
}
}
此时的rig是局部变量,只能在Start()中使用,不能在其他方法中使用。同时rig.velocity为一个不为0的速度值,所以游戏物体会朝Z轴匀速运动。
脚本挂在需要操作的游戏物体上,在游戏物体上添加Rigdbody刚体组件,取消重力
3.先声明,再获取
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class NewBehaviourScript : MonoBehaviour
{
public float speed = 10;//运动速度
public float rotationSpeed = 10;//旋转速度
private Rigidbody rig;//声明
void Start()
{
rig = GetComponent<Rigidbody>();//获取
}
void Update()
{
float v = Input.GetAxisRaw("Vertical");
rig.velocity = transform.forward * v * speed;//W、S或者右边的上、下键,控制前后移动
float h = Input.GetAxisRaw("Horizontal");
rig.angularVelocity = transform.up * h * rotationSpeed;//A、D或者右边的左、右键,控制向左、向右旋转
}
}
脚本挂在需要操作的游戏物体上,同样添加刚体组件,取消重力。当两个碰撞器碰撞时,需要视情况禁用Freeze Rotation,防止相互摩擦产生非法旋转。
4.获取自身脚本,操作自身脚本。
(1)直接声明获取,script1 只能作为局部变量
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class NewBehaviourScript : MonoBehaviour
{
void Start()
{
NewBehaviourScript1 script1 = GetComponent<NewBehaviourScript1>();//声明并获取
script1.cube = true;
}
}
(2)先声明,再获取
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class NewBehaviourScript : MonoBehaviour
{
private NewBehaviourScript1 script1;//声明
void Start()
{
script1 = GetComponent<NewBehaviourScript1>();//获取
script1.cube = true;
}
}
在NewBehaviourScript1中设置cube为false,运行后改变为true。
5.获取其他游戏物体组件
(1)声明组件类型,拖拽游戏物体赋值,Unity会自动查找游戏物体身上的组件
using UnityEngine;
public class NewBehaviourScript : MonoBehaviour
{
public NewBehaviourScript2 script2;//声明
void Start()
{
script2.capsule = true;
}
}
在NewBehaviourScript2中设置capsule为false,运行后改变为true。
(2)声明游戏物体,并拖拽赋值
using UnityEngine;
public class NewBehaviourScript : MonoBehaviour
{
public GameObject _capsule;//声明
private NewBehaviourScript2 script2;//声明
void Start()
{
script2 = _capsule.GetComponent<NewBehaviourScript2>();
//NewBehaviourScript2 script2 = _capsule.GetComponent();//script2作为局部变量使用
script2.capsule = true;
//_capsule.GetComponent().capsule = true;(或者不声明script2,直接使用这一句)
}
}