首页 > 其他分享 >物体组件

物体组件

时间:2023-05-29 19:46:41浏览次数:39  
标签:SphereCollider Sphere 物体 go 查找 组件

物体组件

1.组件的基本操作

代码类名后面跟的MonoBehaviour使脚本能够挂到物体的组件中。

组件在Inspector视图中,可以通过最下面的Add Component添加组件,通过组件点击组件名左边的勾选符号打开或关闭组件,通过组件名右边的三个点下面的Remove Component移除组件。

2.通过脚本操作组件

2.1添加组件

使用的API:AddComponent</*组件名称*/>();

示例:

using UnityEngine;

public class Test : MonoBehaviour

{

    void Start()

    {

        GameObject go = GameObject.Find("Cube/Sphere");

        go.AddComponent<Rigidbody>();

    }

}

该段代码先找出物体Sphere,运行时在该物体上添加Rigidbody组件。

2.2查找组件

2.2.1.查找单个组件

使用的API:GetComponent</*组件名称*/>()

示例:

using UnityEngine;

public class Test : MonoBehaviour

{

    void Start()

    {

        GameObject go = GameObject.Find("Cube/Sphere");

        go.GetComponent<SphereCollider>().radius = 1;

    }

}

该段代码的功能是,先查找Sphere物体,然后查找Sphere物体的SphereCollider组件,并将该组件中radios值改为1。

如果想查找该物体及其子物体的某个组件,可以将示例代码中的go.GetComponent<SphereCollider>().radius = 1;改为go.GetComponentInChildren<SphereCollider>().radius = 1;,改完之后会查找该物体及其子物体的该组件类型,找到一个后便停止,不再继续查找。

如果想查找该物体及其父物体的某个组件,可以将示例代码中的go.GetComponent<SphereCollider>().radius = 1;改为go.GetComponentInParent<SphereCollider>().radius = 1;改完之后会查找该物体及其父物体的该组件类型,找到一个后便停止,不再继续查找。

2.2.2.查找多个同类型的组件

使用的API:GetComponents<AudioSource>();

示例:

using UnityEngine;

public class Test : MonoBehaviour

{

    void Start()

    {

        GameObject go = GameObject.Find("Cube/Sphere");

        SphereCollider[] sphereColliders= go.GetComponents<SphereCollider>();

        Debug.Log("查找到多少个:"+sphereColliders.Length);

    }

}

这段代码的功能是,先找到Sphere物体,找出物体里所有SphereCollider组件,将找到的组件放入数组SphereCollider中,并通过控制台打印数组的长度。

如果想查找该物体及其子物体的某个组件,可以将示例代码中的SphereCollider[] sphereColliders= go.GetComponents<SphereCollider>();改为SphereCollider[] sphereColliders= go.GetComponentsInChildren<SphereCollider>();改完之后会查找该物体及其子物体的所有该组件类型。

如果想查找该物体及其父物体的某个组件,可以将示例代码中的SphereCollider[] sphereColliders= go.GetComponents<SphereCollider>();改为SphereCollider[] sphereColliders = go.GetComponentsInParent<SphereCollider>();改完之后会查找该物体及其父物体的所有该组件类型。

3.删除组件

使用的API:Destroy(/*要删除的组件类型*/);

示例:

using UnityEngine;

public class Test : MonoBehaviour

{

    void Start()

    {

        GameObject go = GameObject.Find("Cube/Sphere");

        SphereCollider sphereCollider = go.GetComponent<SphereCollider>();

        Destroy(sphereCollider);

    }

}

该段代码的功能是,找到物体Sphere,并在运行时删除该物体的SphereCollider组件。SphereCollider sphereCollider = go.GetComponent<SphereCollider>();改为Component sphereCollider = go.GetComponent<SphereCollider>();也可实现该效果。

4.关闭和激活组件

使用的API:enabled=false;

示例:

using UnityEngine;

public class Test : MonoBehaviour

{

    void Start()

    {

        GameObject go = GameObject.Find("Cube/Sphere");

        go.GetComponent<SphereCollider>().enabled=false;

    }

}

该代码的功能是,找到物体Sphere,并在运行时关闭该物体的SphereCollider组件。

如果想要激活组件,可以将上面示例中的go.GetComponent<SphereCollider>().enabled=false;改为go.GetComponent<SphereCollider>().enabled=true;

 

标签:SphereCollider,Sphere,物体,go,查找,组件
From: https://www.cnblogs.com/gatran/p/17441458.html

相关文章

  • vue-封装组件-超出部分限制...,并且提示
    显示效果 代码:<template><divclass="tip"><el-tooltip:content="content"placement="top"width="400":disabled="!isShowTooltip"><spanclass="me......
  • 关于动态渲染的组件watch监听不到传入的props的问题
    watch:{propsTime:{handler(newValue,oldValue){console.log('props',newValue)this.getOverviewData()},//这里增加了一个immediate属性,说明监听到props传参后立即先去执行handler方法immediate:true,}......
  • Django用户认证组件 (auth模块)
    1、导入auth模块#认证模块fromdjango.contribimportauth#对应数据库用户表,可以继承扩展fromdjango.contrib.auth.modelsimportUser2、创建用户对象create():创建一个普通用户,密码是明文的。create_user():创建一个普通用户,密码是密文的。create_superu......
  • 微信小程序常用的view、text、button、image组件
    【黑马程序员前端微信小程序开发教程,微信小程序从基础到发布全流程_企业级商城实战(含uni-app项目多端部署)】https://www.bilibili.com/video/BV1834y1676P/?p=9&share_source=copy_web&vd_source=03c1dc52eeb3747825ecad0412c18ab1这个系列是用来放代码的,方便view普通视图......
  • 【React工作记录七十一】直接用ref控制子组件弹框的开启
     前言我是歌谣我有个兄弟巅峰的时候排名c站总榜19叫前端小歌谣曾经我花了三年的时间创作了他现在我要用五年的时间超越他今天又是接近兄弟的一天人生难免坎坷大不了从头再来歌谣的意志是永恒的放弃很容易但是坚持一定很酷导语如何直接通过父组件直接改变子组件的状态编......
  • Vue引入Element组件
    直接在VSCode的VueCLI的项目里进行npm安装,终端输入npmielement-ui-S显示报错信息,-4048,看了一下应该是我权限不够,虽然这里的VSCode也是Powershell的终端命令。 打开桌面主菜单,选择管理员命令行,切换到指定的文件下,然后安装element,成功!! 复盘一下发现,应该是我的VSCode打开......
  • 十二、集成分布式事务组件Seata
    什么是Seata网址:seata.ioSeata是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata将为用户提供了AT、TCC、SAGA和XA事务模式,为用户打造一站式的分布式解决方案。 seata术语TC(TransactionCoordinator)-事务协调者维护全局和分支......
  • 前端热力图组件heatMapGD中国地图 中国热力地图 广东省热力地图 广东省地图 地市选择
    快速实现前端中国热力地图广东省热力地图广东省地图,请访问uni-app插件市场地址:https://ext.dcloud.net.cn/plugin?id=12407 #china广东省热力地图使用方法#map数据获取链接:http://datav.aliyun.com/portal/school/atlas/area_selector 效果图如下:  ####HTML......
  • 前端下拉框组件CCDropDownFilter下拉框 筛选框 仿美团下拉筛选框
    快速实现下拉框筛选框仿美团下拉筛选框,请访问uni-app插件市场地址:https://ext.dcloud.net.cn/plugin?id=12421效果图如下:    #下拉框使用方法####HTML代码部分```html<template><viewclass="content"><viewstyle="margin-top:16px;"><viewstyle="......
  • 前端自定义弹框组件、自定义弹框内容alertView popup组件
    快速实现前端自定义弹框、自定义弹框内容alertViewpopup组件,请访问uni-app插件市场地址:https://ext.dcloud.net.cn/plugin?id=12491 效果图如下:  代码如下:#自定义弹框使用方法####HTML代码部分```html<template><viewclass="content"><imageclass="logo"sr......