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

脚本挂在需要操作的游戏物体上
在这里插入图片描述
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<NewBehaviourScript2>();//script2作为局部变量使用
        script2.capsule = true;
        //_capsule.GetComponent<NewBehaviourScript2>().capsule = true;(或者不声明script2,直接使用这一句)
    }
}

在这里插入图片描述在这里插入图片描述
在NewBehaviourScript2中设置capsule为false,运行后改变为true。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值