UnityAPI学习之游戏物体的方法使用

目录

游戏物体

创建游戏物体的三种方式

组建的获取和查找

游戏物体的方法与其他成员变量

游戏物体的生成

游戏物体的激活状态/标签(tag)/层级(layer)

游戏物体的激活与失活

游戏物体的查找

1. 名称查找(Find)

2. 通过标签查找游戏物体(FindGameObjectWithTag/FindGameObjectsWithTag())

FindGameObjectWithTag

FindGameObjectsWithTag()

3. 通过类型查找游戏物体(FindObjectOfType(Type type))


游戏物体

创建游戏物体的三种方式

1.使用构造函数(声明+实例化) 创建一个空的游戏对象

2.根据现有的预制体(游戏物体)资源或者游戏场景已有的游戏物体

3.使用特别的API创建一些基本的游戏物体类型

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class NO3_GameObject : MonoBehaviour
{public GameObject grisGo;// Start is called before the first frame updatevoid Start(){//1.使用构造函数(声明+实例化) 创建一个空的游戏对象GameObject myGo = new GameObject("MyGameobject");//2.根据现有的预制体(游戏物体)资源或者游戏场景已有的游戏物体Instantiate(grisGo);//3.使用特别的API创建一些基本的游戏物体类型GameObject.CreatePrimitive(PrimitiveType.Plane);}// Update is called once per framevoid Update(){}
}

组建的获取和查找

this关键指的是当前代码中的游戏物体

现在要通过this关键字访问Gris物体的名字

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class NO3_GameObject : MonoBehaviour
{public GameObject grisGo;// Start is called before the first frame updatevoid Start(){/*//1.使用构造函数(声明+实例化) 创建一个空的游戏对象GameObject myGo = new GameObject("MyGameobject");//2.根据现有的预制体(游戏物体)资源或者游戏场景已有的游戏物体Instantiate(grisGo);//3.使用特别的API创建一些基本的游戏物体类型GameObject.CreatePrimitive(PrimitiveType.Plane);*/Debug.Log(this.grisGo.name);}// Update is called once per framevoid Update(){}
}

游戏物体的方法与其他成员变量

游戏物体的生成

GameObject.Instantiate(可以生成任何已经存在的游戏物体)

GameObject.CreatePrimitive(用于生成Unity中一些基本的UI物体)

游戏物体的激活状态/标签(tag)/层级(layer)

游戏物体的激活与失活

gameobject.SetActive()

查看当前游戏物体的激活状态/标签/层级

//查看游戏物体标签Debug.Log(gameObject.tag);//查看游戏物体层级Debug.Log(gameObject.layer);//查看游戏物体的激活状态Debug.Log(gameObject.activeInHierarchy);Debug.Log(gameObject.activeSelf);

游戏物体的查找

1. 名称查找(Find)

示例:查找名为Main Camera的游戏物体并将其放在创建的容器里,输出其激活状态

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class NO3_GameObject : MonoBehaviour
{public GameObject grisGo;// Start is called before the first frame updatevoid Start(){/*//1.使用构造函数(声明+实例化) 创建一个空的游戏对象GameObject myGo = new GameObject("MyGameobject");//2.根据现有的预制体(游戏物体)资源或者游戏场景已有的游戏物体Instantiate(grisGo);//3.使用特别的API创建一些基本的游戏物体类型GameObject.CreatePrimitive(PrimitiveType.Plane);*//*Debug.Log(this.grisGo.name);//查看游戏物体标签Debug.Log(gameObject.tag);//查看游戏物体层级Debug.Log(gameObject.layer);//查看游戏物体的激活状态Debug.Log(gameObject.activeInHierarchy);Debug.Log(gameObject.activeSelf);*/GameObject MainCamera = GameObject.Find("Main Camera");Debug.Log(MainCamera.activeSelf);}// Update is called once per framevoid Update(){}
}

总结

1)函数的返回值是一个被查找到的对象(GameObject类),如果存在多个同名的物体,也只是返回其中一个。(可能不是你想要的那一个)
2)物体需要处于active()处于true状态才能被找到。
3)FInd()非常消耗性能,不建议在Update()方法里面使用。
4)该函数也可以查找子游戏物体对象。如果多个游戏场景同时运行,那么Find()查找的范围是所有场景。

2. 通过标签查找游戏物体(FindGameObjectWithTag/FindGameObjectsWithTag())
FindGameObjectWithTag

该方法与Find()用法比较相似,区别就是该方法是通过标签来查找一个不是特定的游戏物体,如果找到,则返回一个游戏物体对象,没有找到会传一个空字符或者null.抛出一个异常

示例:通过查找标签名为Main Camera的游戏物体查找该游戏物体的名称

GameObject MainCamera = GameObject.FindGameObjectWithTag("MainCamera");Debug.Log(MainCamera.name);

总结

1)函数的返回值是一个被查找到的对象(GameObject类),如果存在多个同名的物体,也只是返回其中一个。(可能不是你想要的那一个)
2)物体需要处于active()处于true状态才能被找到。
3)该方法消耗的性能比Find()方法小
4)该函数也可以查找子游戏物体对象。如果多个游戏场景同时运行,那么Find()查找的范围是所有场景。

FindGameObjectsWithTag()

这个函数也是根据标签来查找游戏物体对象,它返回的是一个游戏物体对象数组,场景中存在相同标签的物体都将被返回。

示例:查找标签为enemy的游戏物体

创建Enemy空物体保存标签为enemy的物体(标签可以自行创建)

GameObject[] enemy = GameObject.FindGameObjectsWithTag("enemy");for (int i = 0; i < enemy.Length; i++){Debug.Log(enemy[i]);}

总结
1)该函数方法的返回值是一个游戏数组对象,存在多个同标签的游戏物体,将全部返回、
2)物体需要处于active()处于true状态才能被找到。
3)该方法消耗的性能比Find()方法小

3. 通过类型查找游戏物体(FindObjectOfType(Type type))

示例:

NO3_GameObject No3 = GameObject.FindObjectOfType<NO3_GameObject>();Debug.Log(No3.name);

总结

该函数会在场景中查找第一个匹配给定类型的游戏对象,并返回找到的游戏对象的引用。 参数 type 是一个 System.Type
类型的对象,用于指定要查找的类型。 请注意,该函数只返回在激活的场景中找到的对象。如果对象在不激活的场景中或被禁用,将无法找到。

该函数通常用于获取指定类型的单个组件实例。如果你想要一次获取多个匹配的组件实例,可以使GameObject.FindObjectsOfType(Typetype) 函数。

总而言之,GameObject.FindObjectOfType(Type type) 是一种根据给定类型查找游戏对象的便捷方法,可以用于获取场景中的特定类型的对象引用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/845766.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于linux程序的查看、前台运行、后台运行、杀死的管理操作。

前言 在Linux中&#xff0c; 程序&#xff08;program&#xff09;是放在磁盘上的程序&#xff0c;是不会执行的。 进程&#xff08;process&#xff09;是程序被触发&#xff0c;从而加载到内存中的&#xff0c;会被CPU随机执行。 Linux中&#xff0c;有非常多的进程在实时运…

【Python】临时禁用系统代理设置

在Python中&#xff0c;如果你想要临时禁用系统代理设置&#xff0c;可以使用以下方法&#xff1a; python import os import requests# 获取当前的环境变量 proxy_env_vars {HTTP_PROXY, HTTPS_PROXY, http_proxy, https_proxy} current_proxies {k: v for k, v in os.envi…

Vue:现代前端开发的首选框架-【声明周期钩子详解】

引言 Vue.js 是一个流行的前端框架&#xff0c;它通过组件化的开发方式&#xff0c;让开发者能够构建出高效且可维护的应用程序。在Vue中&#xff0c;生命周期钩子&#xff08;Lifecycle Hooks&#xff09;是理解组件行为的关键概念。本文将深入探讨Vue生命周期钩子&#xff0…

网络故障与排除(四)

一、WLAN网络优化分为几个部分 WLAN网络进行优化时&#xff0c;可以从下面几个方面开展优化&#xff1a; 1.AP功率调整&#xff1b; 2.天馈系统调整&#xff1b; 3.AP信道调整&#xff1b; 4.干扰调整&#xff1b; 5.网络侧组网和带宽调整。 二、Portal重定向原理 1、P…

如何让Google收录网页?

确保网页被Google快速且持续地收录&#xff0c;页面的质量起着至关重要的作用。高质量的网页不仅更容易被搜索引擎收录&#xff0c;而且能够提高网页在搜索结果中的排名&#xff0c;想确保页面的质量&#xff0c;要保持原创&#xff0c;确保你的内容是独一无二的&#xff0c;别…

Python基础教程——数据类型和变量

数据类型和变量 Python使用缩进来组织代码块,一般使用4个空格的缩进.使用#来注释一行,其他每一行都是一个语句,当语句以冒号:结尾时,缩进的语句视为代码块.Python对大小写敏感. 1.1 整数 Python可以处理任意大小的整数,包括负整数,写法与数学上写法一致,例如&#xff1a;-10…

使用OpenCV进行简单图像分割的3个步骤

想象一下&#xff0c;用几行Python代码就能让你的照片中的人物“跳”出来&#xff0c;或者精准地把蓝天从背景中分离。今天&#xff0c;我们就用OpenCV这个强大的图像处理库来实现这一魔法&#xff0c;而且只需要三个简单的步骤&#xff01;让我们一起&#xff0c;把复杂的技术…

Qt Creator中, ui设计中设置属性无效, 会自动变回去问题

最近学qt遇到个问题, 很奇怪, 具体表现为: 我想修改这个字体大小为12, 但是修改后会自动变回9, 我读取qss方式设置样式, 依然无效&#xff01;找了很久&#xff0c;最终发现是我在最上层设置了字体大小&#xff0c; 导致下面的所有控件&#xff0c; 全部设置字体无效&#xff…

不常用但特别好用的字符串方法—.partitioin()和.translate()

不常用但特别好用的字符串方法—.partitioin()和.translate() 在 Python 中, str.partition() 和 str.translate() 是两种有用的字符串方法,可以帮助您以不同的方式操作字符串。 1. str.partition(sep) 该 partition() 方法使用指定的分隔符 ( sep ) 将字符串拆分为三个部…

文档分词与词汇权重(TF-IDF)

文档分词与词汇权重 1、文档分词2、词汇权重&#xff08;TF-IDF&#xff09; 1、文档分词 文本分类主要做的是如何提取文本中的主要信息。那么&#xff0c;如何衡量哪些信息是主要信息呢&#xff1f; 我们知道&#xff0c;一篇文档是由若干词汇组成的&#xff0c;也就是文档的…

Flutter 中的 SliverCrossAxisGroup 小部件:全面指南

Flutter 中的 SliverCrossAxisGroup 小部件&#xff1a;全面指南 Flutter 是一个功能丰富的 UI 开发框架&#xff0c;它允许开发者使用 Dart 语言来构建高性能、美观的移动、Web 和桌面应用。在 Flutter 的丰富组件库中&#xff0c;SliverCrossAxisGroup 是一个较少被使用的组…

【CPP】栈简介及简化模拟实现

CPP栈和队列简单模拟实现 目录 1. 栈的简介2. 栈简化模拟实现3. 栈练习题 1. 栈的简介 栈 是一种 特殊的线性表&#xff0c;具有数据 先进后出 特点。 具体参考&#xff1a;【数据结构】栈 CPP库参考文档&#xff1a;stl_stack 注意&#xff1a; 1.stack本身 不支持迭代器操…

骨传导耳机防踩雷秘诀是什么?六大选购技巧独家揭秘!

相信大家都已经深有体会&#xff0c;拿那种常规的入耳式无线蓝牙耳机来做运动耳机&#xff0c;很难满足运动需要。如果选择前两年流行的颈挂式无线运动蓝牙耳机&#xff0c;虽然简单轻巧&#xff0c;但也是入耳式设计&#xff0c;长时间佩戴耳朵不舒服。这样看来&#xff0c;运…

Python-3.12.0文档解读-内置函数sorted()详细说明+记忆策略+常用场景+巧妙用法+综合技巧

一个认为一切根源都是“自己不够强”的INTJ 个人主页&#xff1a;用哲学编程-CSDN博客专栏&#xff1a;每日一题——举一反三Python编程学习Python内置函数 Python-3.12.0文档解读 目录 Python-3.12.0文档解读详细说明 功能描述 参数说明 用法示例 备注 进阶用法 参考…

【Qt】【模型视图架构】代理模型示例

文章目录 1. 基本排序/过滤模型Basic Sort/Filter Model Example2. 自定义排序/过滤模型Custom Sort/Filter Model ExampleFilterLineEdit类定义及实现MySortFilterProxyModel类定义及实现 1. 基本排序/过滤模型Basic Sort/Filter Model Example 官方提供的基本排序/过滤模型示…

docker 清理磁盘

文章目录 Docker - 解决/var/lib/docker/overlay2占用很大、容器无法启动问题&#xff08;清理磁盘&#xff09;一、首先执行如下命令可以查看 docker 文件夹磁盘使用情况&#xff1a;二、执行如下可以查看 Docker 的磁盘使用情况&#xff08;类似于 Linux 上的 df 命令&#x…

【算法】贪心算法——柠檬水找零

题解&#xff1a;柠檬水找零(贪心算法) 目录 1.题目2.题解3.参考代码4.证明5.总结 1.题目 题目链接&#xff1a;LINK 2.题解 分情况讨论 贪心算法 当顾客为5元时&#xff0c;收下当顾客为10元时&#xff0c;收下10元并找回5元当顾客为20元时&#xff0c;收下20元并找回10…

使用Python进行图像锐化的4个基础操作

想要让你的照片从模糊变锐利&#xff0c;就像魔法师轻轻一挥魔杖&#xff1f;今天我们就来学习如何用Python施加这神奇的“锐化滤镜”&#xff01;&#x1f389; 首先&#xff0c;你需要一位得力助手——Pillow库&#xff0c;它能让我们轻松处理图像。如果你还没安装&#xff…

Python Config 用法:探索配置文件的艺术

Python Config 用法&#xff1a;探索配置文件的艺术 在Python编程的广袤领域中&#xff0c;config模块以其独特的方式&#xff0c;为开发者们提供了一种灵活而强大的配置管理手段。本文将深入剖析config的用法&#xff0c;从四个方面、五个方面、六个方面和七个方面展现其魅力…

大泽动力车载柴油发电机的特点和优势有哪些

大泽动力车载柴油发电机具有一系列显著的特点和优势&#xff0c;以下是对其的详细介绍&#xff1a; 低噪音性能&#xff1a;大泽动力车载柴油发电机具备明显的低噪音性能&#xff0c;其噪音限值在距离机组7米处测得为70dB(A)&#xff0c;这为用户提供了一个相对安静的工作环境…