当前位置: 首页 > news >正文

Unity自带脚本之GameObject脚本

目录

GameObject基本成员变量

静态方法

创建自带几何体

1.查找对象

通过tag来查找对象

2查找多个对象

实例化对象(克隆对象)的方法

删除对象的方法

        过场景不移除 

Unity中的Object和C#中的万物之父的区别

成员方法

        创建空物体

      为对象 动态添加指定脚本

               标签比较

     设置激活失活

    次要的成员方法 了解即可 不建议使用       


GameObject基本成员变量

名字
        print(this.gameObject.name);
        this.gameObject.name = "哈哈哈哈";
        print(this.gameObject.name);


是否激活
        print(this.gameObject.activeSelf);


是否是静态
        print(this.gameObject.isStatic);

层级
        print(this.gameObject.layer);
标签
        print(this.gameObject.tag);
transform
        this.transform 上一节课讲解的 通过Mono去得到的依附对象的GameObject的位置信息
        他们得到的信息是一样 都是依附的GameObject的位置信息
        print(this.gameObject.transform.position);
 

静态方法

创建自带几何体


        //只要得到了一个GameObject对象 我就可以得到它身上挂在的任何脚本信息
        //通过obj.GetComponent来得去
        GameObject obj = GameObject.CreatePrimitive(PrimitiveType.Cube);
        obj.name = "mmm";

1.查找对象


        两种找单个对象的共同点:
        1.无法找到失活的对象的 
          只能找到 激活的对象

        2.如果场景中 存在多个满足条件的对象
          我们无法准确确定找到的是谁 

        1查找单个对象
        通过对象名查找
       

这个查找效率比较低下  

因为他会在场景中遍历的所有对象去查找
        没有找到 就会返回null
        GameObject obj2 = GameObject.Find("某个物体");
        if( obj2 != null )
        {
            print(obj2.name);
        }
        else
        {
            print("没有找到对应对象");
        }


通过tag来查找对象


        GameObject obj3 = GameObject.FindWithTag("Player");
       GameObject obj3 = GameObject.FindGameObjectWithTag("Player");该方法和上面这个方法 效果一样 只是名字不一样而已
       

           
        if (obj3 != null)
        {
            print("根据tag找的对象" + obj3.name);
        }
        else
        {
            print("根据tag没有找到对应对象");
        }

2查找多个对象


        找多个对象的API 只能是通过tag去找多个 通过名字 是没有找多个的方法的

     

  通过tag找到多个对象
        它也是 只能找到 激活对象 无法找到失活对象
        GameObject[] objs = GameObject.FindGameObjectsWithTag("Player");
        print("找到tag为Player对象的个数" + objs.Length);

还有几个查找对象相关是用的比较少的方法 是GameObject父类 Object提供的方

   
       

Lesson4 o = GameObject.FindObjectOfType<Lesson4>();
print(o.gameObject.name);

它可以找到场景中挂载的某一个脚本对象
效率更低 上面的GameObject.Find 和通过FindWithTag找 只是遍历对象
这个方法 不仅要遍历对象 还要遍历对象上挂载的脚本 

实例化对象(克隆对象)的方法


实例化(克隆)对象 它的作用 是根据一个GameObject对象 创建出一个和它一模一样的对象
        GameObject obj5 = GameObject.Instantiate(myObj);
如果你继承了 MonoBehavior 其实可以不用写GameObject一样可以使用
因为 这个方法时Unity里面的 Object基类提供给我们的 所以可以直接用
Instantiate(myObj);

删除对象的方法


        GameObject.Destroy(myObj2);
 
         GameObject.Destroy(obj5, 5);  第二个参数 代表延迟几秒钟删除

Destroy不仅可以删除对象 还可以删除脚本
GameObject.Destroy(this);

删除对象有两种作用
     1.是删除指定的一个游戏对象
    2.是删除一个指定的脚本对象
注意:

这个Destroy方法 不会马上移除对象 只是给这个对象加了一个移除标识 
一般情况下 它会在下一帧时把这个对象移除并从内存中移除

如果没有特殊需求 就是一定要马上移除一个对象的话 

建议使用上面的 Destroy方法 因为 是异步的 降低卡顿的几率


        下面这个方法 就是立即把对象 从内存中移除了 
        GameObject.DestroyImmediate(myObj);

        如果是继承MonoBehavior的类 不用写GameObject
        Destroy(myObj2);
        DestroyImmediate(myObj);

        过场景不移除 


   默认情况 在切换场景时 场景中对象都会被自动删除掉

如果你希望某个对象过场景不被移除 
下面这句代码就是谁过场景被移除 就传谁 
一般都是传 依附的GameObject对象
比如下面这句代码的意思 就是自己依附的GameObject对象 过场景不被删除

       

GameObject.DontDestroyOnLoad(this.gameObject);


        如果继承MOnoBehavior也可以直接写
DontDestroyOnLoad(this.gameObject);
 

Unity中的Object和C#中的万物之父的区别


        Unity里面的Object 不是指的万物之父object
        Unity里的Object 命名空间在UnityEngine中的 Object类 也是集成万物之父的一个自定义类
        C#中的Object 命名空间是在System中的 

   

成员方法

        创建空物体


       new一个GameObject就是在创建一个空物体


        GameObject obj6 = new GameObject();


      为对象 动态添加指定脚本


        继承MOnoBehavior的脚本 是不能够去new 
        如果想要动态的添加继承MonoBehavior的脚本 在某一个对象上
        直接使用GameObject提供的方法即可


        Lesson1 les1 = obj6.AddComponent(typeof(Lesson1)) as Lesson1;


        //用泛型更方便
        Lesson2 les2 = obj6.AddComponent<Lesson2>();


        //通过返回值 可以得到加入的脚本信息
        //来进行一些处理

   得到脚本的成员方 和继承Mono的类得到脚本的方法 一模一样  


        
       标签比较


        下面两种比较的方法 是一样的
        if(this.gameObject.CompareTag("Player"))
        {
            print("对象的标签 是 Player");
        }
        if(this.gameObject.tag == "Player")
        {
            print("对象的标签 是 Player");
        }

     设置激活失活


        //false 失活
        //true 激活
        obj6.SetActive(false);
        obj7.SetActive(false);
        obj8.SetActive(false);

    次要的成员方法 了解即可 不建议使用
       


        下面讲的方法 都不建议大家使用 效率比较低
        通过广播或者发送消息的形式 让自己或者别人 执行某些行为方法

        通知自己 执行什么行为
        命令自己 去执行这个TestFun这个函数 会在自己身上挂在的所有脚本去找这个名字的函数
        它会去找到 自己身上所有的脚本 有这个名字的函数去执行
        this.gameObject.SendMessage("TestFun");
        this.gameObject.SendMessage("TestFun2", 199);

        广播行为 让自己和自己的子对象执行
        //this.gameObject.BroadcastMessage("函数名");

        向父对象和自己发送消息 并执行
        //this.gameObject.SendMessageUpwards("函数名");

       

相关文章:

Unity自带脚本之GameObject脚本

目录 GameObject基本成员变量 静态方法 创建自带几何体 1.查找对象 通过tag来查找对象 2查找多个对象 实例化对象&#xff08;克隆对象&#xff09;的方法 删除对象的方法 过场景不移除 Unity中的Object和C#中的万物之父的区别 成员方法 创建空物体 为对象 动态添加…...

软件测试面试题-自测

一、测试流程 1.项目测试流程你是怎么开展的&#xff1f; ①首先&#xff0c;需求分析阶段&#xff0c;分析需求点&#xff0c;需求确定以后进入测试计划阶段&#xff0c;参考需求规格说明书进行测试计划编写 ②接着&#xff0c;进入测试设计阶段&#xff0c;依据需求文档及原…...

深度学习-神经网络

文章目录 一、基本组成单元&#xff1a;神经元二、神经网络层三、偏置与权重四、激活函数1.激活函数的作用2.常见的激活函数1).Sigmoid2).Tanh函数3).ReLU函数 五、优点与缺点六、总结 神经网络&#xff08;Neural Network, NN&#xff09;是一种模拟人类大脑工作方式的计算模型…...

Redis - 集群篇 - 集群模式

面试的时候被人问到集群的问题&#xff0c;搬砖仔哪懂这么多&#xff0c;继续整理一下知识点 Redis 集群模式 Redis集群就是将多个Redis节点连接在一起&#xff0c; 让Redis在不同的节点上同时提供服务。 Redis集群主要有三种模式&#xff1a; 主从复制模式&#xff08;mast…...

Robot Operating System——线速度和角速度

大纲 应用场景1. 移动机器人控制场景描述具体应用 2. 无人机控制场景描述具体应用 3. 机械臂运动控制场景描述具体应用 4. 自动驾驶车辆控制场景描述具体应用 5. 机器人仿真场景描述具体应用 6. 机器人传感器数据处理场景描述具体应用 定义字段解释 案例 geometry_msgs::msg::T…...

量化投资策略_因子打分选股的案例实现

一&#xff1a;因子打分选股的介绍 因子打分选股是一种量化投资策略&#xff0c;它通过选取多个与股票收益率相关的因子&#xff0c;对股票进行综合评分&#xff0c;然后根据评分来选择股票构建投资组合。以下是构建多因子打分选股模型的一般步骤&#xff1a; 数据预处理&…...

架构师知识梳理(七):软件工程-工程管理与开发模型

软件工程概述 软件开发生命周期 软件定义时期&#xff1a;包括可行性研究和详细需求分析过程&#xff0c;任务是确定软件开发工程必须完成的总目标&#xff0c;具体可分成问题定义、可行性研究、需求分析等。软件开发时期&#xff1a;就是软件的设计与实现&#xff0c;可分成…...

bp的模块被隐藏了

看我们现在没有代理那个模块了 我们点击查看 这里有被我们隐藏的模块&#xff0c;比如代理等&#xff0c;把前面的眼睛点一下 这个模块就出来了&#xff0c;如果想把他固定在任务栏里 拖动这个位置 就好了&#xff0c;如果有其他问题可以留言&#xff0c;看到可进我的努力给你…...

C++学习笔记(21)

243、条件变量-生产消费者模型 条件变量是一种线程同步机制。当条件不满足时&#xff0c;相关线程被一直阻塞&#xff0c;直到某种条件出现&#xff0c;这些线 程才会被唤醒。 C11 的条件变量提供了两个类&#xff1a; condition_variable&#xff1a;只支持与普通 mutex 搭配&…...

Ubuntu系统入门指南:常用命令详解

Ubuntu系统入门指南&#xff1a;常用命令详解 引言 Ubuntu是一个基于Linux内核的开源操作系统&#xff0c;由Canonical公司和社区共同开发和维护。它以易用性、稳定性和广泛的软件支持而著称&#xff0c;广泛应用于个人电脑、服务器和云计算环境。对于新手来说&#xff0c;掌…...

keep-alive缓存不了iframe

最近做了个项目&#xff0c;其中有个页面是由 iframe 嵌套了一个另外的页面&#xff0c;在运行的过程中发现 KeepAlive 并不生效&#xff0c;每次切换路由都会触发 iframe 页面的重新渲染&#xff0c;代码如下&#xff1a; <router-view v-slot"{ Component }">…...

Gradio快速部署构建AIGC的web应用 ,python

Gradio快速部署构建AIGC的web应用 &#xff0c;python Gradio开源项目链接&#xff1a; https://github.com/gradio-app/gradiohttps://github.com/gradio-app/gradio &#xff08;1&#xff09;python的pip安装&#xff1a; pip install gradio &#xff08;2&#xff09;写…...

《职教论坛》

《职教论坛》投稿须知 《职教论坛》为全国中文核心期刊。为进一步提高期刊的规范化和标准化&#xff0c;也可使作者投搞有规可循&#xff0c;特对来稿提出如下要求&#xff1a; 一、稿件应有创新内容&#xff0c;应观点明确、资料准确、结构严谨、表述清楚、文字简明&#xff…...

JZ2440开发板——S3C2440的时钟体系

参考博客 &#xff08;1&#xff09;S3C2440-裸机篇-05 | S3C2440时钟体系详解&#xff08;FCLK、PCLK、HCLK&#xff09; 一、三种时钟&#xff08;FCLK、HCLK、PCLK&#xff09; 如下图所示&#xff0c;S3C2440的时钟控制逻辑&#xff0c;给整个芯片提供三种时钟&#xff1…...

[数据集][目标检测]男女性别检测数据集VOC+YOLO格式9769张2类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;9769 标注数量(xml文件个数)&#xff1a;9769 标注数量(txt文件个数)&#xff1a;9769 标注…...

static 初始化报错

在 C 或 C 中&#xff0c;当你在函数中使用 static 关键字初始化一个局部变量时&#xff0c;编译器要求初始化器&#xff08;initializer&#xff09;是编译时常量。如果你尝试用动态计算的值初始化 static 变量&#xff08;如函数参数或运行时生成的值&#xff09;&#xff0c…...

3D Gaussian Splatting 论文学习

概述 目前比较常见的渲染方法大致可以分为2种&#xff1a; 将场景中的物体投影到渲染平面&#xff1a;传统的渲染管线就是这种方式&#xff0c;主要针对Mesh数据&#xff0c;可以将顶点直接投影成2D的形式&#xff0c;配合光栅化、深度测试、Alpha混合等就可以得到渲染的图像…...

MySQL 安全机制全面解析

‍ 在如今的数字化时代&#xff0c;数据库安全 变得越来越重要。为了防止对数据库进行非法操作&#xff0c;MySQL 定义了一套完整的安全机制&#xff0c;包括用户管理、权限管理 和 角色管理。本文将为你深入浅出地介绍这三大安全机制&#xff0c;帮助你轻松掌握MySQL的安全管…...

vue原理分析(十四)研究new Vue()中的 initProvide

在Vue.prototype._init 中有一些init函数&#xff0c;今天我们来研究这些init函数 Vue.prototype._init function (options) {......{initProxy(vm);}......initLifecycle(vm);initEvents(vm);initRender(vm);callHook$1(vm, beforeCreate, undefined, false /* setContext *…...

Qt控制开发板的LED

Qt控制开发板的LED 使用开发板的IO接口进行控制是嵌入式中非常重要的一点&#xff0c;就像冯诺依曼原理说的一样&#xff0c;一个计算机最起码要有输入输出吧&#xff0c;我们有了信息的接收和处理&#xff0c;那我们就要有输出。 我们在开发板上一般都是使用开发板的GPIO接口…...

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…...

Java如何权衡是使用无序的数组还是有序的数组

在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...

Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错

出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上&#xff0c;所以报错&#xff0c;到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本&#xff0c;cu、torch、cp 的版本一定要对…...

Linux-07 ubuntu 的 chrome 启动不了

文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了&#xff0c;报错如下四、启动不了&#xff0c;解决如下 总结 问题原因 在应用中可以看到chrome&#xff0c;但是打不开(说明&#xff1a;原来的ubuntu系统出问题了&#xff0c;这个是备用的硬盘&a…...

【Java_EE】Spring MVC

目录 Spring Web MVC ​编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 ​编辑参数重命名 RequestParam ​编辑​编辑传递集合 RequestParam 传递JSON数据 ​编辑RequestBody ​…...

MySQL 知识小结(一)

一、my.cnf配置详解 我们知道安装MySQL有两种方式来安装咱们的MySQL数据库&#xff0c;分别是二进制安装编译数据库或者使用三方yum来进行安装,第三方yum的安装相对于二进制压缩包的安装更快捷&#xff0c;但是文件存放起来数据比较冗余&#xff0c;用二进制能够更好管理咱们M…...

【Redis】笔记|第8节|大厂高并发缓存架构实战与优化

缓存架构 代码结构 代码详情 功能点&#xff1a; 多级缓存&#xff0c;先查本地缓存&#xff0c;再查Redis&#xff0c;最后才查数据库热点数据重建逻辑使用分布式锁&#xff0c;二次查询更新缓存采用读写锁提升性能采用Redis的发布订阅机制通知所有实例更新本地缓存适用读多…...

【 java 虚拟机知识 第一篇 】

目录 1.内存模型 1.1.JVM内存模型的介绍 1.2.堆和栈的区别 1.3.栈的存储细节 1.4.堆的部分 1.5.程序计数器的作用 1.6.方法区的内容 1.7.字符串池 1.8.引用类型 1.9.内存泄漏与内存溢出 1.10.会出现内存溢出的结构 1.内存模型 1.1.JVM内存模型的介绍 内存模型主要分…...

MacOS下Homebrew国内镜像加速指南(2025最新国内镜像加速)

macos brew国内镜像加速方法 brew install 加速formula.jws.json下载慢加速 &#x1f37a; 最新版brew安装慢到怀疑人生&#xff1f;别怕&#xff0c;教你轻松起飞&#xff01; 最近Homebrew更新至最新版&#xff0c;每次执行 brew 命令时都会自动从官方地址 https://formulae.…...