Unity 语法详解之查找游戏物体的方法(含查找隐藏物体)

这篇具有很好参考价值的文章主要介绍了Unity 语法详解之查找游戏物体的方法(含查找隐藏物体)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

为了更好的看懂,有一个非常基础的知识,如果不知道可以移步去了解一下哦

unity | gameobject和transform的区别和关联通俗解释_gameobject transform_菌菌巧乐兹的博客-CSDN博客

一、前情提要

大写的GameObject是个类,里面写满了物体有关的代码

小写的gameObject指的是物体本身

大写的Transform是个类,里面写满了和社会关系有关的代码

小写的transform是物体本身的社会关系

大写的Resources是个类,是一个可以控制各种各样资源的类

二、用大写的GameObject查找

我们把GameObject想象成人,那么小写的gameObject就是某个人,大写的就是全人类

你让某一个人去孤孤单单的找人,那可太难了,所以小写的gameObject不支持找人。

只有大写的能找。

1.靠名字找
        //XXX里写物体的名字
        GameObject go = GameObject.Find("XXX");

使用范围和查找顺序:

a.只能找到激活物体(我能找你,但是你藏起来,非要我找,过分了吧)

b.先找自己→和自己同级的→自己的子物体们→自己的父物体和那些没什么直接关系的

(由近及远的找,很好理解的,我让你找东西,你肯定也先看自己有没有,再问问身边的人有没有,实在没有再去问小孩要,小孩没有再去找父母要,父母也没有再去找陌生人)

c.只找一个,先找到谁就谁

2.靠标签找(类似人物特征)

Unity 语法详解之查找游戏物体的方法(含查找隐藏物体),# unity代码语法,unity,游戏,游戏引擎

        //XXX里填标签
        GameObject go = GameObject.FindGameObjectWithTag("XXX");
        GameObject[] go = GameObject.FindGameObjectsWithTag("XXX");

使用范围和查找顺序:

a.只能找到激活物体(原因同上,都是通过全人类查找,不管你找啥,原理都一样呗)

b.先找自己→和自己同级的→自己的子物体们→自己的父物体和那些没什么直接关系的

(理由同上,都是通过全人类查找,不管你找啥,原理都一样呗)

c.只找一个时,先找到谁就谁(理由同上,都是通过全人类查找,不管你找啥,原理都一样呗)

d.找一个好几个时,需要个数组都放进去

3.靠挂件找(挂件就指的是组件,我只是觉得它挂在身上,就叫挂件)

        //Image可以换成别的组件
        Image image  = GameObject.FindObjectOfType<Image>();
        Image[] image  = GameObject.FindObjectsOfType<Image>();

使用范围和查找顺序:

a.只能找到激活物体(原因同上)

b.先找自己→和自己同级的→自己的子物体们→自己的父物体和那些没什么直接关系的

(理由同上)

c.只找一个时,先找到谁就谁(理由同上)

d.找一个好几个时,需要个数组都放进去

二、用小写的transform查找

大写的Transform是个类,里面写满了和社会关系有关的代码,可以理解成,里面都是处社会的方法,你有需要可以用这些方法,但是,你不能指望这些守则去给你找人。

小写的transform是物体本身的社会关系,你可以让这个人,问问自己家里人

1.靠名字找
    //XXX里写物体的名字
    Transform t = transform.Find("XXX");

使用范围:

a.只能找到激活物体(理由同GameObject)

b.只找自己孩子

(这里的社会关系指的自己家人,包含父母或者再往上,孩子或者再往下

它默认你找它找人,肯定不是找的它自己,所以它不找自己;

可能国外和父母关系比较疏离,所以它也不找父母,也不找长辈,

最后就只问问自己孩子)

c.只找一个时,先找到谁就谁

d.但是,它也可以委托自己的某个孩子找找,孩子找也服从a-d的规则

Transform t = transform.Find("儿子的名字/想查找的人名");

e.也可以委托孙子找,就继续(子子孙孙无穷尽也)

Transform t = transform.Find("儿子的名字/孙子的名字/想查找的人名");
2.直接找孩子
        //0那里写几就是第几个孩子
        Transform t = transform.GetChild(0);
        //也可以子子孙孙无穷尽也,我第0个孩子的第0个孩子的......
        Transform t = transform.GetChild(0).GetChild(0).GetChild(0).GetChild(0);

使用范围:

a.也能找到隐藏物体,毕竟你都指名道姓了

3.直接找爸爸
        Transform t = transform.parent;
        //也可以爸爸的爸爸叫爷爷
        Transform t = transform.parent.parent.parent.parent;

四、用大写的Resources查找

大写的Resources是个类,各种挂件都能找到

Image[] images = Resources.FindObjectsOfTypeAll<Image>();

使用范围:

a.它不是物体,没有亲疏远近,要找就一堆给你了,不支持找一个

b.隐藏的也能找到(所有物体都属于资源,不管你藏没藏,都在项目里,一捋名单,逃无可逃)文章来源地址https://www.toymoban.com/news/detail-527935.html

到了这里,关于Unity 语法详解之查找游戏物体的方法(含查找隐藏物体)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Unity功能——编辑器模式下隐藏/显示游戏对象的快捷方法

    声明:本文为个人笔记,用于学习研究使用非商用,内容为个人研究及综合整理所得,若有违规,请联系,违规必改。 unity20XX.X.X VS20XX 在编辑器模式下,想快捷的显示/隐藏一个游戏对象. 实现原理: 对组件进行扩展方法.对MonoBehaviour ,Transform,GameObject 组件进行扩展方法 快捷键为

    2024年02月08日
    浏览(35)
  • unity根据名字查找物体

    在 Unity 中,可以使用 GameObject.Find() 函数来根据名字查找物体。例如: 这样就可以获取名字为 \\\"MyGameObject\\\" 的物体了。 注意,GameObject.Find() 函数只能在场景中查找物体,如果需要在预制件中查找物体,可以使用 Resources.Load() 函数。 还有一点需要注意的是,GameObject.Find() 函数的

    2024年02月12日
    浏览(23)
  • 【Unity自制手册】基于Unity中物体移动相关方法和API集锦(动图详解)

    👨‍💻个人主页 :@元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏 : unity每日一记 ⭐相关文章: 线性差值函数以及平滑阻尼的运用和实践(Lerp AND SmoothDamp) ⭐相关文章:基础不牢,地动山摇系列 ------ 软

    2024年01月16日
    浏览(26)
  • 「unity技巧」如何查找脚本挂载在哪个物体(组件)上?

    目录 一、简单粗暴版方法 二、代码方式 这是场景。 我们要找的脚本: 在Hierarchy窗口中输入要找的 脚本名称 。 结果出现。 若需要运行中寻找挂载脚本的物体:

    2024年02月12日
    浏览(27)
  • 编辑器脚本:Unity中如何查找哪些物体上有missing的脚本

    编辑器中选中物体,判断这些物体及子物体上是否有丢失的脚本 1、编辑器选中n个物体 2、获取这n个物体及其它们的子物体,数据集记为A 3、A中全部物体判断他们是否有null的脚本(MonoBehaviour) 4、判断一个物体(obj)是否有空脚本的关键语句: obj.GetComponentsMonoBehaviour().Any(mon

    2024年02月14日
    浏览(32)
  • 【Unity】Unity开发学习和项目实践02——创建第一个Unity项目和游戏物体

    创建第1个Unity项目 打开Unity hub,点击新项目 以下有四处地方需要注意选择: 1.Unity编辑器版本 2.项目模板 3.项目名称 4.项目保存位置 点击创建项目 ok,进入编辑器了 把编辑器界面布局稍微改一下,改成2by3 点击Edit 点击 project settings,这是对我们所创建工程的设置 此外还有对

    2024年01月25日
    浏览(34)
  • 【Unity3D】Unity 脚本 ③ ( C# 脚本的执行入口函数 | 获取当前游戏物体及物体名称 | 获取游戏物体的 Transform 组件数据 | UnityEngine 命名空间简介 )

    在 C# 脚本中控制 游戏物体 GameObject 运动 , 要先获取该物体 , 然后 修改其 Transform 组件的属性 ; 在 游戏开始运行后 , 会自动执行 游戏物体 GameObject 上的 C# 组件代码 , 程序入口是 MonoBehaviour#Start() 函数 ; 在 C# 脚本中 , 主要的内容都在 Start() 函数 中实现 ; 在 C# 脚本中 , 游戏物体

    2023年04月12日
    浏览(52)
  • Unity上接入手柄,手柄控制游戏物体移动

    1、unity软件上安装system input 组件。菜单栏【window】-【Packag Manager】打开如下界面,查找Input System,并且安装。 2、安装成功后插入手柄到windows上,打开菜单栏上【window】--【Analysis】--【Input Debuger】 进入Input Debug界面,可以看到手柄设备能被Unity识别。 3、双击【XinputControllerW

    2024年04月15日
    浏览(31)
  • 【图文详解】Unity存储游戏数据的几种方法

    在Unity中,常用的数据存储方法包括PlayerPrefs、ScriptableObject、JSON、XML和数据库等。 PlayerPrefs是Unity自带的一种简单的键值存储系统,适合存储一些简单的游戏数据。ScriptableObject是一种Unity类,可用于创建可序列化的对象并存储数据。JSON和XML是轻量级的数据交换格式,可以通过

    2023年04月08日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包