首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Unity3D 入门:如何脚本中找到游戏对象父子级祖孙级对象和它们组件

在真正能玩游戏场景中,很多脚本执行是在不确定游戏对象上进项,于是会考虑在父对象或者子对象上去写脚本。这时,可能需要查找游戏对象。那么如何脚本中找到父子游戏对象(gameObject)呢?...在为游戏对象创建脚本时候,这个脚本类会继承自 MonoBehavior: 1 2 3 4 5 6 7 8 9 10 11 12 using UnityEngine; public class WindowUpdater.../子对象 MonoBehavior 并没有提供直接查找父子对象方法。...本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。...欢迎转载、使用、重新发布,但务必保留文章署名 吕毅 (包含链接: https://blog.walterlv.com ),不得用于商业目的,基于本文修改后作品务必以相同许可发布。

65840
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Unity基础系列(四)——构造分形(递归实现细节)

    在本教程中,我们将编写一个小C#脚本,让它完成一些类似分形行为。 这里假设你已经能够了解一些Unity基本操作,并且能够创建基本C#脚本了。...可以将其应用到Unity对象hierarchy中来实现这个效果。比如从某个根对象开始,然后向其中添加较小但在其他方面相同对象。 手动完成该操作将会非常麻烦,因此创建脚本来完成。...创建一个新空游戏对象并将其放置在原点。这将是分形母体。然后创建一个名为Fractal新C#脚本,并将其添加到对象上。 ? ? (工程创建) 2 展示内容 脚本有了,那么分形是什么样子呢?...这就是为什么Unity在他们默认脚本模板中包含它,以及为什么本示例在一开始也包括它原因。...然后,再将CreateChildren简化为一个短循环,并使用子索引作为Initialization参数。 ? 数组如何工作? 数组是长度固定对象,包含一个线性变量序列。

    1.9K10

    Unity基础教程系列(新)(七)——有机品种(Making the Artificial Look Natural)

    1.2 颜色间插值 我们不会限制于灰度或单色渐变。通过调用具有两种颜色静态Color.Lerp方法和我们先前用作其插值器系数,可以在任意两种颜色之间进行插值。...(Gradient 属性,设置为白-红-黑) 要使用渐变,请使用相同插值器值,用对渐变Evaluate替换Update中对Color.Lerp调用。 ?...(使用FractalColor作为反照率) 2.2 基于实例标识符颜色 为了实施每个实例多样性,我们需要以某种方式使GetFractalColor取决于所绘制对象实例标识符。...3.3 平滑度 除了不同颜色,我们还可以使叶子具有不同平滑度。实际上,我们可以根据第二个顺序来更改平滑度,就像我们更改颜色一样。...无论零件方向如何,它似乎都会被拉下。但是方向会突然改变。当下垂方向改变时,会发生这种情况。因为我们使用固定下垂角度,所以唯一选择是沿正向或负向下垂,或者根本不下垂。

    1.4K10

    Unity基础教程系列(新)(一)——游戏对象脚本(Creating+a+Clock)

    (场景窗口下Icon) 如何浏览场景窗口? 可以结合使用alt键或Option键和光标来旋转视图。还可以使用箭头键移动视点,并通过滚动进行缩放。同样,按F键可将视图聚焦在当前选定对象上。...(project 窗口下Hour indicator,1列和2列布局对比) 选择材质并将其Albedo更改为其他颜色,方法是单击其颜色字段。这将打开一个颜色弹出窗口,其中提供了多种选择颜色方法。...我们代码现已生效。保存文件,然后切换回UnityUnity编辑器将检测到脚本资产已更改,并触发重新编译。完成之后,选择脚本。检查员将通知我们该资产不包含MonoBehaviour脚本。 ?...(非组件脚本) 这意味着我们不能使用脚本Unity中创建组件。至此,我们Clock定义了一种基本C#对象类型。...Awake和一些其他方法集合被视为特殊Unity事件方法。无论我们如何声明它们,Unity引擎都会找到它们并在适当时候调用它们。这是从托管.NET环境外部发生

    4.3K20

    Unity可编程渲染管线系列(九)烘焙阴影(混合光照)

    本文重点: 1、淡入淡出实时阴影 2、应用阴影遮罩和阴影探针 3、每个物体使用4个烘焙阴影 4、在普通和距离 阴影遮罩中进行选择 5、支持减法照明 这是涵盖Unity可编写脚本渲染管道系列教程第九部分...本教程使用Unity 2018.3.0f2制作。 ? (烘焙阴影和实时阴影一起工作) 1 阴影淡入淡出 带有阴影实时照明渲染起来很昂贵。烘焙照明便宜得多,但它不包含镜面反射,并且在运行时无法更改。...(实时阴影逐渐消失) 2 阴影遮罩 要烘焙阴影,请将Unity混合照明模式设置为Shadowmask。同时禁用实时全局照明,这样我们就可以专注于阴影。...对于每个可见光,我们可以通过从灯光对象获取烘焙输出来检查它是如何烘焙。如果混合烘焙类型,则将灯光混合烘焙模式设置为阴影遮罩时,将使用阴影遮罩。 ? 在我们着色器中为关键字添加一个多编译指令。...因此,最终结果是烘焙和减去照明最小值。 ? ? (颜色阴影) 如果环境照明大部分是均匀并且与阴影颜色匹配,则可以产生合理结果。默认阴影颜色Unity标准环境照明设置不错选择。

    2.8K10

    基础渲染系列(十七)——混合光照

    由于这是最近重大变化,因此需要排查错误。 要更改第一件事是不再使用SHADOW_COORDS宏来定义阴影坐标的插值器。必须使用UNITY_SHADOW_COORDS宏。 ?...(实时和阴影遮罩产生叠加阴影) 现在,我们可以在静态对象上同时获取实时阴影和烘焙阴影,并且它们可以正确融合。实时阴影仍会超出阴影距离逐渐消失,但烘焙阴影不会消失。 ?...当我介绍新可编写脚本渲染管线时,我可能不会依赖UNITY_LIGHT_ATTENUATION。 3 阴影减法 混合照明是不错选择,但它不如完全烘焙照明便宜。...同样,我们必须以某种方式知道动态阴影区域中间接光照情况。由于我们使用是完全烘焙光照贴图,因此没有此信息。Unity使用统一颜色来近似环境光,而不是仅使用间接光来包括其他光照图。...(减少后光) 无论环境光线如何,这始终会产生纯黑色阴影。为了更好地匹配场景,我们可以使用我们subtractive shadow color,通过unity_ShadowColor来使用

    2.6K40

    Unity基础系列(五)——每秒帧率(测试性能)

    本教程将创建一个简单测试场景,然后测试其性能。先用profiler排查,然后创建我们自己帧率计数器。 本教程要求对Unity脚本有基本理解。兼容Unity5.0.1及以上版本。...如果你还不熟悉Unity脚本操作,可以先看一看前面几个章节。 ? (聚集球体,知道你帧率开始承受不住) 1 构造原子核 要测试性能,就需要搭建一个测试场景。...一个理想测试场景应该涵盖高性能和低性能情况。所以这里通过将越来越多核子融合在一起来创造一个原子核。随着核变越来越大,性能逐渐恶化。...分别给不同材质球,让它们看起来不同。其实性能演示只需要一种核子类型就够了,但这样感觉就没意思了。 什么是预制体? 预制体是一个不存在于场景中且未被激活Unity对象对象层次结构。...或者,可以更改刚体部件插值模式,以便它们在物理步骤之间进行插值,从而隐藏较低更新频率。 2 使用Profiler 现在已经有了一个场景,并且最终能降低任何机器帧率,现在是衡量实际性能时候了。

    2.8K20

    基础渲染系列(十八)——实时光全局光照、探针体积、LOD组

    由于标志是由着色器GUI设置,因此这是在通过检查器编辑材质时确定。至少,这就是Unity标准着色器工作方式。因此,如果以后通过脚本或动画系统更改发光颜色,则不会调整该标志。...这是导致许多人不了解为什么自发光属性动画化,不会影响实时GI原因。结果是,如果要在运行时更改自发光颜色,则通常不将自发光颜色设置为纯黑色。...SHEvalLinearL0L1_SampleProbeVolume如何工作? 顾名思义,该函数仅包括前两个球谐频带L0和L1。Unity LPPV不使用第三频段。...Unity还为SpeedTree对象使用了另一种淡入模式,我们将不使用它。...UnityApplyDitherCrossFade如何工作? 该功能在UnityCG中定义。它方法与我们在“第12章 半透明阴影”中使用抖动相似,不同之处在于,整个对象抖动级别是统一

    4.1K30

    基础渲染系列(十四)——雾

    本教程 使用Unity5.5.0f3。 ? (随着距离增加,物体逐渐消退) 1 前向雾 到目前为止,我们一直将光线视为通过真空传播。...然后将此因子钳制在0–1范围内,并用于在雾和对象阴影颜色之间进行插值。 为什么雾不影响天空盒? 雾效果可调整正向渲染对象片段颜色。因此,它仅影响这些对象,而不影响天空盒。...雾颜色存储在unity_FogColor中,该颜色在ShaderVariables中定义。 ? UNITY_CALC_FOG_FACTOR_RAW如何工作? 宏在UnityCG中定义。...1.9 多灯光 我们雾在单个灯光下可以正常工作,但是当场景中有多个灯光时,它表现如何?当我们使用黑雾时,它看起来不错,但也可以尝试使用其他颜色。 ? ?...Unity将检查相机是否具有使用此方法组件,并在渲染场景后调用它们。这让你可以更改效果或将效果应用于渲染图像。如果有多个这样组件,则会按照它们连接到相机顺序来调用它们。

    2.9K20

    Flutter 小技巧之 Flutter 3 下 ThemeExtensions 和 Material3

    通过 ThemeExtensions ,第三方 package 在编写控件时,也可以提供对应 ThemeExtensions 对象,实现更灵活样式配置支持。...回答这个问题之前,我们先看 _TokeDefaultsM3 有什么特别之处,从源码注释里可以看到 _TokeDefaultsM3 是通过脚本自动生成,并且目前版本号是 v0_92 ,所以 M3 和 M2...而之所以 M3 默认样式不再需要 Brightness.dark 判断,是因为在 M3 使用 ColorScheme 里已经做了判断。...事实上现在 Flutter 3.0 里 colorScheme 才是主题颜色核心,而 primaryColorBrightness 和 primarySwatch 等参数在未来将会被弃用,所以如果目前你还在使用...在 Material3 下颜色其实不是完全按照 RGB 去计算,而是会经过 material-color-utilities 转化,通过内部 CorePalette 对象,RGB 会转化为 HCT

    1.3K30

    通过C#脚本实现旋转立方体

    一、介绍 目的:通过一个简单例子(鼠标点击,使立方体旋转和变色)熟悉Unity中C#脚本编写。 软件环境:Unity 2017.3.0f3 、 VS2013。...二、C#脚本实现 1,启动Unity,创建游戏场景。【关于Unity基本操作请点击 Unity入门教程(上)进行了解】 ? 2,在Assets目录下创建文件夹,用于存放游戏各种资源。...9,添加控制Text显示脚本 使用UGUI组件必须在C#脚本中添加UI命名空间,这样我们才能引用。当bCube2值为真时,Text组件显示“Cube正在旋转中...”...,中间还学习了UGUI使用。...Unity脚本语言综合应用并不是通过一个实例就能够达到熟练程度,还需要自己不断地练习和探索,不断尝试bug和及时总结。

    1.7K60

    Unity性能调优手册7:渲染优化,DrawCall,剔除,Shader,LOD,TextureStreaming

    脚本缩放分辨率 若要动态更改脚本绘图分辨率,请调用Screen.SetResolution 当前分辨率可以在屏幕上获得Screen.width 或者Screen.height,DPI可以在Screen.dpi...中使用一个可脚本渲染管道(SRP),它是一个减少渲染CPU成本特性,仅在Scriptable Render Pipeline中可用。...在此窗口中,您可以更改每个对象静态标志,更改烘焙设置等,并按下烘焙按钮,可以通过按下烘焙按钮来执行烘焙。...例如,用于颜色分级LUT(颜色对应表)将预先校正纹理,使每个像素坐标对应于每种颜色。通过在着色器中基于原始颜色对纹理进行采样,结果几乎与对原始颜色进行预校正相同。...这将从阴影绘制调用中移除对象。这个设置通常在Unity中打开,在使用阴影项目中应该注意。 减少物体在阴影绘制最大距离也是有用

    2.3K64

    通过C#脚本实现旋转立方体

    一、介绍 目的:通过一个简单例子(鼠标点击,使立方体旋转和变色)熟悉Unity中C#脚本编写。 软件环境:Unity 2017.3.0f3 、 VS2013。...二、C#脚本实现 1,启动Unity,创建游戏场景。【关于Unity基本操作请点击 Unity入门教程(上)进行了解】 ? 2,在Assets目录下创建文件夹,用于存放游戏各种资源。...9,添加控制Text显示脚本 使用UGUI组件必须在C#脚本中添加UI命名空间,这样我们才能引用。当bCube2值为真时,Text组件显示“Cube正在旋转中...”...,中间还学习了UGUI使用。...Unity脚本语言综合应用并不是通过一个实例就能够达到熟练程度,还需要自己不断地练习和探索,不断尝试bug和及时总结。

    1.2K30

    Unity基础教程系列(七)——可配置形状(Variety of Randomness)

    加载游戏还是会得到具有任意角速度形状,因为回收形状会保持其原有速度。因为保存角速度需要更改文件格式,所以请将保存版本增加到4。 ? 在形状颜色之后写下角速度。 ?...但是我们不能使用FixedUpdate,因为不管如何Unity都会调用同名方法,所以必须将其重命名为其他名称。这里我们修改为GameUpdate,并将其公开,以便Game可以访问它。 ?...请注意,FloatRange并非特定于形状配置,而是像往常一样在其自己脚本文件中定义。 ? 要使Unity保存浮动范围值,请使用Serializable属性标记类型。...这里其实不恢复也可以,因为Unity默认编辑器会为我们恢复值,但是我们通常不应该依赖它。 ? 4.3 配置颜色 我们可以配置另一件事是允许随机颜色范围。...因为最小值和最大值可以通过滑块更改,所以我们必须通过在它们前面放置ref来提供它们作为参考参数。这就使它们成为对变量引用(就像它们是对象而不是浮点数一样),因此MinMaxSlider可以更改它们。

    2.7K30

    Pico Neo 3教程☀️ 三、SDK 进阶功能

    设置渐变效果: 当勾选该选项时,SDK会自动给 Camera 添加 PXR_ScreenFade 脚本。...FadeTime:持续时间(时间单位为秒) FadeColor:渐变颜色 Tracking Origin:关于摄像头位置 SDK提供设置“追踪原点类型”功能,默认为Floor模式。...静态注视点渲染(FFR)是指将视野焦点固定在视口中心位置,实现从中心向周围逐渐降低清晰度效果。开启和配置“Foveated Rendering”选项如下图所示。...它不会重新编译没有更改文件,因此与Unity编译相比,将编译和部署时间减少了10%到50%,而最终.apk文件和Unity编译生成完全一样。...但是,要发布最终.apk,必须使用Unity编译功能。 注意: 目前,该功能仅支持在windows系统下Unity编辑器开发使用

    17110

    基础渲染系列(十一)——透明度

    但是,当你使用这种材质选择一个四边形时,你会看到一个大致为圆形选择轮廓。 ? (在不透明四边形上展示选中轮廓) 如何得到选中轮廓? Unity 5.5引入了新选择轮廓显示方法。...它默认值为-1,表示没有设置自定义值,因此应使用着色器Queue标记。 ? (自定义渲染队列) 我们并不真正在乎队列的确切值。在将来Unity版本中,它们甚至可能会更改。...这是一个提示,告诉Unity它是哪种着色器。替换着色器使用它来确定是否应渲染对象。 什么是replacement着色器? 它可以否决使用哪种着色器渲染对象。然后,你可以使用这些着色器手动渲染场景。...因此,必须以其他方式绘制透明几何图形。首先绘制最远对象,最后绘制最接近对象。这就是为什么透明东西比不透明东西要贵得多原因。 为了确定几何图形绘制顺序,Unity使用其中心位置。...因此,无论其固有的透明性如何,反射性越强,穿过它光线越少。 为了表示这一点,我们必须在GPU执行混合之前但在更改反照率之后调整alpha值。如果表面没有反射,则其alpha不变。

    3.7K20

    Unity可编程渲染管线系列(三)光照(单通道 正向渲染)

    3、每帧允许16个可见光源 4、每个对象最多计算四个像素光和四个顶点光 这是涵盖Unity可编写脚本渲染管线教程系列第三部分。...对非均匀比例尺支持会需要我们使用转置世界到对象矩阵。 ? 为了验证我们最终得到正确法向矢量,请将它们用作最终颜色。但是仍然要跟踪该材质,因为我们稍后将其用于反照率。 ? ?...Unity默认管线针对每个对象在单独通道中渲染每个灯光。轻量级管线针对每个对象在一次通道中渲染所有灯光。HD管线使用延迟渲染,该渲染将渲染所有对象表面数据,然后每光源渲染一遍。...取而代之是,有一个过渡范围,其中光线逐渐消失。该范围可以由开始衰落内点角和光强度达到零外点角定义。但是,Unity聚光灯仅允许我们设置外角。...这样做目的是Unity将跳过索引已更改为-1所有灯光。对于超出最大值所有灯光,请在ConfigureLights末尾执行此操作。 ?

    2.2K20

    Unity基础系列(二)——构建一个视图(可视化数学)

    然后再把函数和时间关联起来,从而产生一个运动图像。 本教程假设您已经完成了“游戏对象脚本”相关教程,对Unity有了基础了解,并且Unity版本至少要在2017.1。 ?...(用视图表示 x在(-2,2)区间) 查看一个视图可以让我们快速了解一个函数是如何工作。既然这么方便的话,那么我们就看下如何Unity里创建吧。...我们将简单地使用Unity默认立方体游戏对象。 在场景中添加一个立方体,并移除其碰撞组件,因为这个示例中不会使用到物理。 我们会使用脚本来创建这个立方体诸多实例并正确定位它们。...例如,更改预制体Scale会改变仍然在场景中立方体Scale。 但是要注意是,每个实例只会使用自己位置和旋转。也就是说,预制体不会统一修改场景示例对象位置和旋转。...(使用X和Y坐标上色) 红色加绿色变成黄色,所以我们图表目前从浅绿色变成黄色。如果Y坐标从?1开始,我们也会得到深绿色颜色。要想看效果的话,请更改Graph.Awake中代码,以便它显示函数。

    2.8K10
    领券