Unity3d中关于脚本的启用和禁用的意义及脚本前面的复选框消失的解释

Unity3d中关于脚本的启用和禁用的意义及脚本前面的复选框消失的解释

  628人阅读  评论(0)  收藏  举报
  分类:
【Unity3D】(30) 

 

本文章由攀大小熊猫编写,转载请注明出处。

文章链接:http://blog.csdn.net/a237653639/article/details/45766101

作者: 攀大小熊猫    邮箱: 237653639@qq.com  

 

先总结,再证明。

总结:

禁用脚本的目的就是为了让该脚本“不执行”,而启用的目的就是为了让该脚本”执行“。以上是我原来的想法,其实这样的理解有偏差。准确地说,即使脚本为禁用状态,别的脚本也能够成功地调用 被禁用的脚本的成员(后面将给以证明

 

那么,您可能会发问,那我禁用脚本有什么意义呢?

其实意义就是,脚本为启用状态时,unity会自动调用该脚本的类继承自MonoBehaviour的方法,反之,脚本为禁用状态时,unity就不会调用这些方法。但绝不影响其他脚本对该脚本内成员的调用

 

证明:

   即使脚本为禁用状态,别的脚本也能够成功地调用 被禁用的脚本的成员

步骤1,先创建一个cube,然后在其上挂一个Test脚本。然后在MainCamera上挂一个Test2脚本。

   我们将禁用Test脚本,Test2将调用Test内的成员。

  如下图:

cube:

 

camera:

 

Test脚本的内容为:

Test2的内容为:

 

注意,我们已经把Test脚本设为了禁用。

现在,我们看到了运行结果,如下图。cube.GetComponent<Test>().Print()这句话调用成功,但是Test中的继承自MonoBehaviour的Update方法并没有被调用。


现在来解释脚本前面的复选框消失的原因:

首先,复选框消失的原因我先复制粘贴下雨松大神的解释:

凡事脚本没有勾选项的,都是因为你的脚本没有Start方法。。如果你想让勾选框显示出来,

把如下方法加入即可,不信你可以试试。嘿嘿。有人测试了一下, 

加上 Update LateUpdate FixedUpdate OnGUI 也都可以让勾选框出来。。。但是Awake不行。。

通过雨松大神的解释,以下是我进一步的想法。

通过上面的总结,我们已经知道了:脚本为启用状态时,

unity会自动调用该脚本的类继承自MonoBehaviour的方法,

反之,脚本为禁用状态时,unity就不会调用这些方法。

我的想法:

如果你的脚本里面没有继承自MonoBehaviour的方法,意思就是就不需要unity来调用了(根本没有,从何调用)。

这样的话,你的脚本不管是禁用或是启用就都跟Unity没有半毛钱的关系了,

所以Unity才会不给你显示复选框,因为没有必要嘛对吧。而一旦有比如Start这类继承(其实是覆写)了

MonoBehaviour的方法,这时就该Unity出马了!所以复选框就会重新显示出来,

由你来控制是否允许Unity来调用Start等方法。那么Awake呢? 

们查阅Unity的官方文档上可以知道(Awake is called once, just like the constructor.),

如果重新启用一个脚本,那么该脚本内的Awake方法不会被调用,而Start等方法会重新起作用(调用)。

而Awake只在其脚本附加的对象一开始被创建时调用一次(不管该脚本是启用还是禁用

都会被调用一次),以后不再调用。所以”Awake不行“(不能使复选框重新出现),哈哈。

the end^_^

Unity3D核心概念与实战技巧精讲:从入门到精通的进阶指南 游戏开发与实时3D内容创作领域,理解引擎的核心设计原理是提升开发效率与项目质量的关键。本文从组件化设计模式与数据序列化等基础概念切入,深入剖析了Unity引擎的底层运作机制。通过探讨组合优于继承的设计哲学,解释了GameObject与Component模式如何实现高度的灵活性与可维护性。文章进一步阐述了序列化技术如何支撑Inspector面板的数据驱动工作流,实现逻辑与数据的分离,从而提升团队协作效率。结合性能优化与资源管理等工程实践,本文自然聚焦于Unity3D开发中常见的性能陷阱与解决方案,旨在帮助开 阅读详情

相关推荐

Unity3D中Transform.localScale失效的深度解析与解决方案

Unity3D开发中,物体的缩放控制是基础且高频的操作,其背后涉及层级变换、组件协作与渲染管线的复杂原理。Transform.localScale属性定义了物体相对于父级的局部缩放,但其最终视觉效果受层级继承、动画系统、UI布局及物理引擎等多重因素影响,常导致赋值后“看似失效”的问题。理解localScale与lossyScale的区别、Animator组件的覆盖机制以及RectTransform的布局逻辑,是解决缩放问题的技术关键。本文聚焦于Unity开发中常见的缩放失效场景,通过剖析Animator动

weixin_30770783的博客 809

Unity3D禁止脚本运行代码2

Unity3D禁止脚本运行代码 Posted on 2013年03月23日 by U3d / Unity3D脚本/插件/被围观 350 次 Unity3D禁止脚

Unity3D入门实战:从零构建3D滚球收集游戏,掌握游戏开发核心流程

游戏开发的核心在于理解并实践从场景搭建到逻辑实现的完整闭环。其基本原理是通过游戏对象(GameObject)与组件(Component)系统构建虚拟世界,利用物理引擎碰撞检测实现交互,再通过脚本(如C#)驱动游戏逻辑。掌握这一流程对于构建各类互动应用具有普遍的技术价值,无论是移动游戏、模拟训练还是交互式展示。本文以经典的“3D滚球收集”项目为例,聚焦于**C#脚本**与**物理系统**这两个核心模块,手把手演示如何通过控制刚体运动、处理触发器事件来创建一个可玩、可发布的完整小游戏,帮助初学者避开复杂概念,

fanjava 349

Unity中利用UI对脚本启用禁用的控制(以AR作品为例)

我们都知道,Unity中的脚本编写完成后,需要挂载在物体上的脚本都会以Component即组件的形式运载,那么无论是脚本亦或是其他组件如碰撞盒,刚体等组件同样可以利用 .enabled = true / false来控制组件启用 / 禁用。如下代码段: GameObject.FindGameObjectWithTag("ObjectTag").GetComponent<ScriptName>().enabled = true; GameObject.FindGameObjectWithTag

PinaColadaONE的博客 2615

unity如何禁用物体上的其他脚本

unity如何禁用物体上的其他脚本

lucky_XiaoZhang的博客 3305

Untiy 重新启动后所有的脚本文件无法加载

原因是有一个脚本文件中有一个应该有返回值的方法没有返回值,编译错误,所以才出现的这种情况,添加了返回值后就好了,以后遇到这个问题看看是不是自己的脚本有错误,改正错误后看看是不是能够改善这个问题? ...

fendouxiaoD的博客 1765

Unity】如何把挂载的 组件脚本的Enable勾选框 隐藏掉

很简单:删除StartUpdate 即可。

qq_37524903的博客 893

Unity3d遮挡剔除(Occlusion Culling)优化【2019】

很多童鞋的Unity作品完成后,发现场景卡的要死,尽管在模型阶段采用了很多优化建模方法,但还是卡顿。电脑端都这么卡,发布到移动端就更不用说了。遇到这种情况,很多童鞋急得团团转,不知如何是好。此时,就必须对场景进行深度优化,当然了,Unity深度优化的方法很多,本文小姐姐将大家一起探讨Unity3d最重要也是最有效的场景优化方法-遮挡剔除(Occlusion culling),希望对遇到场景卡顿的童鞋有所帮助。当然,对于机器配置高的童鞋,虽然暂时没遇到卡顿,可别忘了,你的作品最终不是在你自己的机器上运行,而

leeby100的博客 1万+

Unity3D中实现3D UI始终面向相机:稳健方案与实战优化

在3D游戏开发中,UI朝向控制是提升沉浸感的关键技术。其核心原理是通过旋转矩阵或四元数运算,使3D物体的前向轴持续指向目标(通常是相机),从而确保UI内容始终清晰可读。这项技术的价值在于解决了World Space UI因相机移动而产生的视觉错位问题,是AR/VR、第三人称游戏大屏展示等场景的通用需求。本文聚焦于Unity3D引擎,针对基础LookAt方法在极端角度下易出现的翻转、抖动问题,提供了一套结合平滑插值、位置跟随与防翻转计算的稳健实现方案。通过引入旋转平滑(Slerp)、位置阻尼(SmoothD

weixin_33875564的博客 445

Unity3D万圣节场景开发:从Shader Graph到粒子系统的全流程实践

在实时渲染领域,着色器(Shader)是实现复杂视觉效果的核心技术,它通过控制GPU渲染管线来定义物体表面的颜色、光照纹理表现。其工作原理涉及顶点着色、片元着色等多个阶段,开发者可通过编写代码或使用可视化工具来创建自定义材质。这项技术的价值在于能够高效实现从基础材质到高级特效的各类渲染需求,显著提升场景的真实感艺术表现力。在游戏开发、虚拟现实影视动画等应用场景中,着色器技术被广泛用于营造特定氛围与风格。本文以万圣节主题场景为例,具体展示了如何运用Unity的Shader Graph可视化着色器编辑工具

weixin_34279184的博客 478

Unity -- 遮挡剔除

勾选后,由下图可见,刚才视锥内保留的好多物体又消失了,这是因为相机处于室内,室内墙不透明,视锥内的室外物体都被室内墙挡住看不见,使用遮挡剔除后,那些物体也被剔除掉了,所以不可见了,但是对比下图右下角游戏视图的内容前面没有任何剔除以及视锥剔除后游戏视图的内容,完全一样,也就是说,遮挡剔除后,也不会改变游戏视图的内容,但是在视锥剔除的基础上,又进一步大幅度降低了相机的渲染量,运行时作品会更加流畅,因为被剔除物体的几何、材质、光照贴图、粒子系统等都不再被渲染了。简单地说,就是把被遮挡住的物体剔除掉。

gghhb12的博客 2521

Unity - 遮挡剔除(Occlusion Culling)优化

遮挡剔除对概念   很多童鞋的Unity作品完成后,发现场景卡的要死,尽管在模型阶段采用了很多优化建模方法,但还是卡顿。电脑端都这么卡,发布到移动端就更不用说了。遇到这种情况,很多童鞋急得团团转,不知如何是好。此时,就必须对场景进行深度优化,当然了,Unity深度优化的方法很多,本文小姐姐将大家一起探讨Unity3d最重要也是最有效的场景优化方法-遮挡剔除(Occlusion culling)...

qq_39091751的博客 4333

UnityParticle1:粒子系统简介

前置:UnityShader 一、创建粒子 创建方式:GameObject -> Effects ->ParticleSystems,这创建 3D 物体方法一样,就是分类选择 Effects 就好 粒子系统这特殊又复杂的 Inspector 界面初看感觉很吓人,这是因为粒子的属性实在是太多了,因此不得不将它们分为一个一个模块,模块左边复选框上的勾勾就表示启用该模块,一般来讲,最常用的就是 Emission & Shape Renderer 当然对于模块的了解可以...

加载中... 3541

Unity脚本开发入门:从C#基础到游戏与XR应用实战

游戏开发与XR内容创作领域,脚本编程是实现交互逻辑的核心技术。其本质是通过编写代码来定义虚拟对象的行为规则,驱动整个应用世界的运转。从基础概念上讲,脚本作为附着在游戏对象上的逻辑指令集,通常使用C#语言编写,是连接美术资源与程序功能的桥梁。理解其工作原理,关键在于掌握Unity特有的生命周期函数(如Start、Update)与组件化架构,这决定了代码的执行时机与对象间的通信方式。这项技术的核心价值在于,它使开发者能够突破预制功能的限制,灵活实现从角色控制、物理模拟到网络通信等一切自定义需求,是创造独特游戏

weixin_30684743的博客 281

Unity游戏视觉优化:Demosaicing技术与BepInEx插件实战

在计算机图形学中,纹理压缩与渲染分辨率管理是优化实时应用性能的核心技术。纹理压缩通过减少显存占用提升加载速度,而动态分辨率缩放则平衡了画质与帧率。这些技术原理广泛应用于游戏开发,尤其在Unity引擎中,通过Mipmap链Render Scale实现视觉质量与性能的权衡。其技术价值在于能在有限硬件资源下保持流畅体验,常见于移动端性能敏感场景。针对游戏画面出现的模糊或马赛克现象,Demosaicing(去马赛克)技术提供了一种逆向增强方案。本文聚焦于利用BepInEx插件框架,在运行时动态干预Unity渲染

weixin_34246551的博客 357

Unity--互动组件(Toggle)

1.组件的可交互2.组件的过渡状态3.组件的导航4.Toggle的属性参数设置Toggle 切换控制是一个复选框,允许用户打开或关闭的一个选项;”Toggle的属性参数:“”Is on:(无”淡入淡出”Graphic::(图形化)Group:(组)如果有 toggle,则属于toggle 组“”组件的过渡状态:“”组件的几种过渡效果:Target Graphic:(图形目标)Normal Color:(正常颜色)Highlighted Color:(高亮显示的颜色)

爱编程的鱼的博客 4625

Unity 3D游戏开发入门:从环境搭建到第一个可交互场景实战

游戏引擎是现代游戏开发的核心工具,它封装了图形渲染、物理模拟、音频处理等底层复杂系统,使开发者能专注于游戏逻辑与创意实现。其工作原理是通过组件化架构,将游戏对象的行为模块化,再通过脚本语言进行逻辑控制,从而实现高效开发与跨平台部署。这种技术方案极大地降低了开发门槛,提升了创作效率,广泛应用于移动游戏、独立游戏乃至3A大厂的生产管线。在众多引擎中,Unity以其低门槛、高上限强大的跨平台能力脱颖而出,尤其适合初学者作为3D游戏开发的起点。本文将以Unity为例,结合C#脚本编写与物理碰撞等热词,详解如何从零

weixin_34209851的博客 502
上一篇: 【Unity3D自学记录】Unity Standard Assets 简介之 Characters
下一篇: C#中消息处理机制(事件与委托)
hypercube2
博客等级 码龄18年 23粉丝 169原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值