unity 组件添加与访问

unity访问其他游戏对象的四种方式

一、通过属性检查七指定参数进行访问其他游戏对象

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Text : MonoBehaviour {
    public GameObject obj;
    // Use this for initialization
    void Start () {
        
    }
    
    // Update is called once per frame
    void Update () {
        obj.transform.Rotate(0, 1, 1);
    }
}

二、通过父子关系的相应函数访问其他游戏对象
当前对象是cylinder,其子对象是cube,该函数实现对其子对象的旋转

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Text : MonoBehaviour {
    // Use this for initialization
    void Start () {
        
    }
    
    // Update is called once per frame
    void Update () {
        this.transform.Find("Cube").Rotate(0, 1, 0);
    }
}

通过该函数实现对其父目录下的对象旋转

void Update () {
        this.transform.parent.Rotate(0, 1, 0);
    }

三、通过名字或者标签获取游戏对象
1、通过名字获取游戏对象

void Update () {
        GameObject obj = GameObject.Find("cube");
        obj.transform.Rotate(0, 1, 1);
    }

2、通过游戏对象的标签获取游戏对象

前提必须为要获取的游戏对象加上“cube”标签,不然找不到

void Update () {
        GameObject obj = GameObject.FindWithTag("cube");
        obj.transform.Rotate(0, 1, 1);
    }

这两种获取游戏对象的方式是一样的,如果有多个cube对象只会找到一个,

首先查找子目录下的对象,若无,查找同级目录下的对象,最后查找父级目录下的对象
四、通过组件名称获取游戏对象

获取第一个transform组件,并控制其旋转,查找方式也是先从子目录下查找

void Update () {
        FindObjectOfType<Transform>().Rotate(0, 1, 0);
    }

获取所有的transform组件,通过组件获取游戏对象,并控制游戏对象旋转

更多unity2018的功能介绍请到paws3d爪爪学院查找。链接https://www.paws3d.com/learn/,也可以加入unity学习讨论群935714213

近期更有资深开发人士直播分享unity开发经验,详情请进入官网或加入QQ群了解

 

### Unity 组件概述 在 Unity 中,组件是构成游戏对象的核心要素之一。每一个游戏对象都可以附加多个不同类型的组件来定义其行为和外观[^4]。 #### 常见的 Unity 组件类型 - **Transform**: 控制游戏对象的位置、旋转和平移变换。这是每个游戏对象默认自带的基础组件。 - **Mesh Filter 和 Mesh Renderer**: 用于展示3D模型。`Mesh Filter` 定义几何形状数据而 `Mesh Renderer` 则负责渲染这个网格并应用材质属性[^1]。 - **Collider (碰撞体)**: 提供物理交互能力,允许检测其他物体之间的接触或触发事件。常见的有 Box Collider, Sphere Collider 等多种形式。 - **Rigidbody**: 当希望某个物体遵循物理学规律移动时使用此刚体组件;它可以设置质量、重力影响等因素。 - **Audio Source**: 处理声音播放的功能模块,支持循环播放、调整音量等功能。 - **Lighting Components(光源组件)**: 如 Directional Light, Point Light 或 Spot Light 来模拟光照效果。 - **UI Elements(UI元素)**: 包括 Button(按钮)、Image(图像)、Dropdown(下拉列表)在内的各种界面控件属于 UI 系统的一部分。 #### 添加管理组件的方法 可以通过两种主要途径向游戏对象添加组件: 1. **通过 Inspector 面板中的 Add Component 按钮**:点击后会出现按字母顺序排列的所有可用组件列表,也可以直接键入关键字来进行过滤查找特定项。 2. **利用顶部菜单栏的选择**:“Component” 下拉菜单提供了按照类别分类好的选项卡结构化视图,便于浏览定位所需功能。 对于自定义逻辑实现,则通常创建 C# 脚本来扩展原有特性或是完全新建独一无二的行为模式。编写此类脚本需继承自 MonoBehavior 类,并可访问 GameObject 的公共字段以及调用生命周期方法如 `Start()` 和 `Update()` [^5]。 ```csharp using UnityEngine; public class ExampleScript : MonoBehaviour { // 此处声明变量作为公开接口供外部修改 public float speed = 5f; private Rigidbody rb; void Start() { // 初始化操作,在第一次帧更新前执行一次 rb = GetComponent<Rigidbody>(); } void Update() { // 每一帧都会被调用 MoveObject(); } void MoveObject(){ Vector3 movement = new Vector3(Input.GetAxis("Horizontal"),0,Input.GetAxis("Vertical")); rb.AddForce(movement * speed); } } ``` 上述代码展示了如何制作一个简单的控制器类,它能够响应键盘输入使关联的对象沿水平面平滑位移。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值