Unity3D组件获取

1.获取游戏物体组件

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轴移动
    }
}

脚本挂在需要操作的游戏物体上
Unity3D组件获取_第1张图片
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轴匀速运动。
Unity3D组件获取_第2张图片
脚本挂在需要操作的游戏物体上,在游戏物体上添加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或者右边的左、右键,控制向左、向右旋转
    }
}

Unity3D组件获取_第3张图片
脚本挂在需要操作的游戏物体上,同样添加刚体组件Unity3D组件获取_第4张图片,取消重力。当两个碰撞器碰撞时,需要视情况禁用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;
    }
}

Unity3D组件获取_第5张图片 Unity3D组件获取_第6张图片
在NewBehaviourScript1中设置cube为false,运行后改变为true。
5.获取其他游戏物体组件
(1)声明组件类型,拖拽游戏物体赋值,Unity会自动查找游戏物体身上的组件

using UnityEngine;

public class NewBehaviourScript : MonoBehaviour
{
    public NewBehaviourScript2 script2;//声明

    void Start()
    {
        script2.capsule = true;
    }
}

Unity3D组件获取_第7张图片 Unity3D组件获取_第8张图片
在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,直接使用这一句)
    }
}

Unity3D组件获取_第9张图片Unity3D组件获取_第10张图片
在NewBehaviourScript2中设置capsule为false,运行后改变为true。

你可能感兴趣的:(unity)