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查找多个对象 实例化对象(克隆对象)的方法 删除对象的方法 过场景不移除 Unity中的Object和C#中的万物之父的区别 成员方法 创建空物体 为对象 动态添加…...
软件测试面试题-自测
一、测试流程 1.项目测试流程你是怎么开展的? ①首先,需求分析阶段,分析需求点,需求确定以后进入测试计划阶段,参考需求规格说明书进行测试计划编写 ②接着,进入测试设计阶段,依据需求文档及原…...
深度学习-神经网络
文章目录 一、基本组成单元:神经元二、神经网络层三、偏置与权重四、激活函数1.激活函数的作用2.常见的激活函数1).Sigmoid2).Tanh函数3).ReLU函数 五、优点与缺点六、总结 神经网络(Neural Network, NN)是一种模拟人类大脑工作方式的计算模型…...
Redis - 集群篇 - 集群模式
面试的时候被人问到集群的问题,搬砖仔哪懂这么多,继续整理一下知识点 Redis 集群模式 Redis集群就是将多个Redis节点连接在一起, 让Redis在不同的节点上同时提供服务。 Redis集群主要有三种模式: 主从复制模式(mast…...
Robot Operating System——线速度和角速度
大纲 应用场景1. 移动机器人控制场景描述具体应用 2. 无人机控制场景描述具体应用 3. 机械臂运动控制场景描述具体应用 4. 自动驾驶车辆控制场景描述具体应用 5. 机器人仿真场景描述具体应用 6. 机器人传感器数据处理场景描述具体应用 定义字段解释 案例 geometry_msgs::msg::T…...
量化投资策略_因子打分选股的案例实现
一:因子打分选股的介绍 因子打分选股是一种量化投资策略,它通过选取多个与股票收益率相关的因子,对股票进行综合评分,然后根据评分来选择股票构建投资组合。以下是构建多因子打分选股模型的一般步骤: 数据预处理&…...
架构师知识梳理(七):软件工程-工程管理与开发模型
软件工程概述 软件开发生命周期 软件定义时期:包括可行性研究和详细需求分析过程,任务是确定软件开发工程必须完成的总目标,具体可分成问题定义、可行性研究、需求分析等。软件开发时期:就是软件的设计与实现,可分成…...
bp的模块被隐藏了
看我们现在没有代理那个模块了 我们点击查看 这里有被我们隐藏的模块,比如代理等,把前面的眼睛点一下 这个模块就出来了,如果想把他固定在任务栏里 拖动这个位置 就好了,如果有其他问题可以留言,看到可进我的努力给你…...
C++学习笔记(21)
243、条件变量-生产消费者模型 条件变量是一种线程同步机制。当条件不满足时,相关线程被一直阻塞,直到某种条件出现,这些线 程才会被唤醒。 C11 的条件变量提供了两个类: condition_variable:只支持与普通 mutex 搭配&…...
Ubuntu系统入门指南:常用命令详解
Ubuntu系统入门指南:常用命令详解 引言 Ubuntu是一个基于Linux内核的开源操作系统,由Canonical公司和社区共同开发和维护。它以易用性、稳定性和广泛的软件支持而著称,广泛应用于个人电脑、服务器和云计算环境。对于新手来说,掌…...
keep-alive缓存不了iframe
最近做了个项目,其中有个页面是由 iframe 嵌套了一个另外的页面,在运行的过程中发现 KeepAlive 并不生效,每次切换路由都会触发 iframe 页面的重新渲染,代码如下: <router-view v-slot"{ Component }">…...
Gradio快速部署构建AIGC的web应用 ,python
Gradio快速部署构建AIGC的web应用 ,python Gradio开源项目链接: https://github.com/gradio-app/gradiohttps://github.com/gradio-app/gradio (1)python的pip安装: pip install gradio (2)写…...
《职教论坛》
《职教论坛》投稿须知 《职教论坛》为全国中文核心期刊。为进一步提高期刊的规范化和标准化,也可使作者投搞有规可循,特对来稿提出如下要求: 一、稿件应有创新内容,应观点明确、资料准确、结构严谨、表述清楚、文字简明ÿ…...
JZ2440开发板——S3C2440的时钟体系
参考博客 (1)S3C2440-裸机篇-05 | S3C2440时钟体系详解(FCLK、PCLK、HCLK) 一、三种时钟(FCLK、HCLK、PCLK) 如下图所示,S3C2440的时钟控制逻辑,给整个芯片提供三种时钟࿱…...
[数据集][目标检测]男女性别检测数据集VOC+YOLO格式9769张2类别
数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):9769 标注数量(xml文件个数):9769 标注数量(txt文件个数):9769 标注…...
static 初始化报错
在 C 或 C 中,当你在函数中使用 static 关键字初始化一个局部变量时,编译器要求初始化器(initializer)是编译时常量。如果你尝试用动态计算的值初始化 static 变量(如函数参数或运行时生成的值),…...
3D Gaussian Splatting 论文学习
概述 目前比较常见的渲染方法大致可以分为2种: 将场景中的物体投影到渲染平面:传统的渲染管线就是这种方式,主要针对Mesh数据,可以将顶点直接投影成2D的形式,配合光栅化、深度测试、Alpha混合等就可以得到渲染的图像…...
MySQL 安全机制全面解析
在如今的数字化时代,数据库安全 变得越来越重要。为了防止对数据库进行非法操作,MySQL 定义了一套完整的安全机制,包括用户管理、权限管理 和 角色管理。本文将为你深入浅出地介绍这三大安全机制,帮助你轻松掌握MySQL的安全管…...
vue原理分析(十四)研究new Vue()中的 initProvide
在Vue.prototype._init 中有一些init函数,今天我们来研究这些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接口进行控制是嵌入式中非常重要的一点,就像冯诺依曼原理说的一样,一个计算机最起码要有输入输出吧,我们有了信息的接收和处理,那我们就要有输出。 我们在开发板上一般都是使用开发板的GPIO接口…...
浅谈 React Hooks
React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...
日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻
在如今就业市场竞争日益激烈的背景下,越来越多的求职者将目光投向了日本及中日双语岗位。但是,一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧?面对生疏的日语交流环境,即便提前恶补了…...
2025年能源电力系统与流体力学国际会议 (EPSFD 2025)
2025年能源电力系统与流体力学国际会议(EPSFD 2025)将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会,EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...
dedecms 织梦自定义表单留言增加ajax验证码功能
增加ajax功能模块,用户不点击提交按钮,只要输入框失去焦点,就会提前提示验证码是否正确。 一,模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...
MMaDA: Multimodal Large Diffusion Language Models
CODE : https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA,它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构…...
如何将联系人从 iPhone 转移到 Android
从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...
令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍
文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结: 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析: 实际业务去理解体会统一注…...
用docker来安装部署freeswitch记录
今天刚才测试一个callcenter的项目,所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...
【JVM面试篇】高频八股汇总——类加载和类加载器
目录 1. 讲一下类加载过程? 2. Java创建对象的过程? 3. 对象的生命周期? 4. 类加载器有哪些? 5. 双亲委派模型的作用(好处)? 6. 讲一下类的加载和双亲委派原则? 7. 双亲委派模…...
人工智能--安全大模型训练计划:基于Fine-tuning + LLM Agent
安全大模型训练计划:基于Fine-tuning LLM Agent 1. 构建高质量安全数据集 目标:为安全大模型创建高质量、去偏、符合伦理的训练数据集,涵盖安全相关任务(如有害内容检测、隐私保护、道德推理等)。 1.1 数据收集 描…...
