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

如何在选择游戏对象时将材质指定给游戏对象,并在使用C#取消选择游戏对象时将其更改回原始材质?

在Unity游戏引擎中,要在选择游戏对象时将材质指定给游戏对象,并在取消选择游戏对象时将其更改回原始材质,可以通过以下步骤实现:

  1. 首先,需要在游戏对象上添加一个材质。在Unity编辑器中,选择需要添加材质的游戏对象,然后在Inspector面板中点击"Add Component"按钮,搜索并添加"Mesh Renderer"组件。
  2. 在"Mesh Renderer"组件下,可以看到一个"Materials"列表,点击列表右侧的"+"按钮,然后选择或创建一个材质,将其指定给游戏对象。
  3. 接下来,需要编写C#脚本来实现取消选择时将材质更改回原始材质的功能。创建一个新的C#脚本文件,并将其附加到游戏对象上。
  4. 在脚本中,首先需要定义一个私有变量来存储原始材质。可以使用Renderer组件的material属性来获取当前材质。
代码语言:txt
复制
private Material originalMaterial;
  1. 在脚本的Start()方法中,将原始材质保存到私有变量中。
代码语言:txt
复制
void Start()
{
    originalMaterial = GetComponent<Renderer>().material;
}
  1. 接下来,在脚本中实现取消选择游戏对象时将材质更改回原始材质的逻辑。可以使用Unity提供的事件方法OnMouseDown()来检测鼠标点击事件,并在该方法中进行处理。
代码语言:txt
复制
void OnMouseDown()
{
    // 取消选择时将材质更改回原始材质
    GetComponent<Renderer>().material = originalMaterial;
}
  1. 最后,将脚本附加到需要进行材质指定和取消选择的游戏对象上。在Unity编辑器中选择游戏对象,然后将脚本拖拽到Inspector面板中的"Add Component"区域或使用右键菜单中的"Attach Script"选项。

这样,当选择游戏对象时,脚本会将指定的材质赋值给游戏对象的渲染器组件;而当取消选择游戏对象时,脚本会将材质更改回原始材质,实现了在选择和取消选择过程中对材质的控制。

关于游戏开发和Unity引擎的更多信息,您可以参考腾讯云的游戏服务相关产品和文档:

以上是基于腾讯云提供的一些游戏服务产品,供您参考和了解。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

unity vr虚拟现实完全自学教程 pdf_ug80完全自学手册pdf

在烘培纹理贴图存为TGA格式。...制作法线贴图 制作法线贴图需要使用贴图烘焙技术,根据低模和原始模型提供的数据获得,除建模软件自带的烘焙功能外,还有专门针对烘焙的软件工具,xNormal。...我们可以3D模型想象为一个纸壳,展UV的过程便是设置裁剪纸壳的方案,将其展平的过程。或者可以2D贴图想象为纸张,展UV的过程便是设置裁剪贴图的方案,将其包裹到模型的过程。...在unity中使用C#编程: 利用函数重载,提高耦合性; 类、对象、方法:C# 是一门面向对象的编程语言,类、对象、方法则是对象语言中的重要的概念,具有相同属性和功能的一组对象的集合就是一个类,比如认识一个类...在unity中,每个脚本文件都会对应一个对象,如果在游戏中想要初始化某个对象,需要将其添加到gameObject中,正如我们之前看到的,unity中的类似附加在游戏对象上的,每个组件都是一个对象,而对个杜建共同组建了一个

3.8K20

Unity基础教程-物体运动(十)——环境交互(Movement with Consequences)

1.4 任意方向 最后,为了使其可以在任何方向上加速,请在“Accelerate”开始体速度转换为区域的局部空间,并在应用时将其转换回世界空间。...虽然不需要将其添加到受影响的游戏对象中,但这仍然是有意义的。 ? (材质选择器) 现在,通过按项目的+按钮将其添加到检测区域组件的输入事件列表中。通过材质选择器的左下角字段游戏对象链接到该项目。...然后对退出事件执行相同的操作,这次参数保留为零。 ? (设置材质) 区域对象默认使用不活动的红色材质。只要有物体进入区域,切换材质到绿色。当有东西离开这个区域,它又会变成红色。 ?...例如,在进入区域激活某些内容。然后退出并不会取消激活它,而重新进入则会再次激活它,虽然二级激活实际上没有任何用处。 这种基于事件的方法可以用于整个游戏吗?...一旦发现自己重复了复杂的模式,便有必要为其创建专用的方法或行为,这种方法或方法应该容易使用并在以后必要进行优化。 3 简单运动 我们将在本教程中介绍的最后一种情况是移动环境对象

3.1K10

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

创建新项目,可以选择其Unity版本和模板。我们将使用标准的3D模板。创建之后,它将添加到项目列表中,并在相应版本的Unity编辑器中打开。 是否可以使用其他渲染管线创建项目?...专门用于2D的对象UI元素)通常具有RectTransform,这是专门的Transform组件。 由于游戏对象为空,因此在场景窗口本身中不可见。...(MeshRenderer 组件 默认的材质) 第三是CapsuleCollider,用于3D物理。该对象代表圆柱体,但它具有胶囊状的碰撞体,因为Unity没有原始圆柱体碰撞体。...当被白光照射,它就是某种东西的颜色。 使Hour indicator使用材质。你可以通过将材质拖到场景或层次结构窗口中的对象上来执行此操作。...这表示我们可以对自己的组件进行编程,以向游戏对象添加自定义行为。这就是behavior部分所指的意思。但这是使用英式拼写就很奇怪。mono部分是将对自定义代码的支持添加到Unity的方式。

4.2K20

Unity基础教程系列(八)——更多工厂(Where Shapes Come From)

本文重点: 1、创建复合形状 2、每个形状支持多个颜色 3、为每个生成区选择工厂 4、保持对形状原始工厂的追踪 这是有关对象管理的系列教程中的第八篇。它介绍了与多个工厂合作的概念以及复杂的形状。...使用较小的比例(1.35)可使我们在立方体的每个面上产生凸起。 ? ? (立方体和球融合) 要将其变成合适的形状,请将Shape组件添加到根立方体对象中。...再将两个对象材质设置为所有其他形状使用的相同白色材质。然后将其变成预制件。 1.2 复合胶囊体 通过组合三个旋转的胶囊可以制成复杂的形状。从默认胶囊开始,然后给它两个子胶囊。...一个FactoryId属性添加到ShapeFactory中。我们不会通过检查器手动设置它,而是让游戏自动分配这些ID。ShapeId一样,该属性只能设置一次。...然后,在获取形状实例使用ID检索正确的工厂。 ? 此时,我们不再需要旧的奇异shapeFactory字段,因此将其删除。 ? 在任何关卡中使用的所有工厂都必须被分配到游戏中。

1.4K10

Unity基础教程系列(新)(二)——构建视图(Visualizing Math)

1.1 预制体 一般通过点放置在适当的坐标上来创建视图。为此,我们需要让点形成3D的可视化。为此,我们使用Unity的默认立方体游戏对象一个添加到场景并将其命名为Point。...(Point 预制件实例) 选择预制资产,检查员显示其根游戏对象和一个大按钮以打开预制体。 ?...(Graph C#资产 在 Scripts 文件夹下) 我们从扩展MonoBehaviour的简单类开始,以便可以将其用作游戏对象的组件。...将其显式设置为默认值,以避免编译器警告。 ? 一个空的游戏对象添加到场景中,并将其命名为Graph。确保其位置和旋转为零,并且其比例为1。Graph组件添加到该对象。...通过在其检查器标题中的Shader下拉列表中选择Graph / Point Surface,将其设置为使用我们的着色器。 ? (Point surface 材质 ) 该材质目前是固体磨砂黑。

2.6K50

unity3d自学教程_3D技巧

资源(Asset):表示材质、纹理、音频文件、游戏对象等在开发过程中可使用的资源。 预制件(Prefab):游戏对象和组件的集合,可以在场景中被复用。...局部坐标(Local Space):使用选择对象的坐标系统。一个对象的局部坐标来自它的枢轴点(Pivot Point),坐标原点即该对象的枢轴点(对象的局部中心),坐标方向与枢轴点方向相同。...网格(Mesh):是一种物体模型的顶点、纹理、材质等信息存储在一个外部文件中的3D物体模型。 材质(Material):物体表面最基础的材料,木质、塑料、金属或者玻璃等。...脚本交互 Unity3D脚本支持JavaScript、C#与Boo(.Net平台中与Python语法相似的一种静态语言),官方推荐使用JavaScript,但考虑到C#的面向对象支持程度与强大的类库...,在大型游戏项目开发建议使用C#

3.3K20

Unity入门教程(上)

当需要查看某游戏对象这个方法会很方便。...再次运行游戏(步骤七),这一次玩家角色快速落下并在撞到地面停止。 ? 十一、让玩家角色跳起来(添加游戏脚本) 1,由于该脚本用于操作玩家角色,所以命名为Player。...从项目视图的Create菜单中选择C# Script,项目视图右侧的Assets栏中将生成一个名为NewBehaviourScript的脚本文件,刚创建完成将其名字改为Player。...十二、修改游戏对象的颜色(创建材质) 1,创建材质 (1)在项目视图中依次点击Create→Material,就可以创建一个叫New Material的项。...十四、小结 本次学习主要使我了解了使用Unity进行游戏开发的基本流程:创建好可见的物体(对象)→编写脚本控制它们的动作→创建材质→调整尺寸→完成。 另外记得每次完成一个过程记得要保存好项目文件。

3.4K70

在unity中使用三种简单的方式实现实时时钟动画

如果你的游戏对象是其他对象对象那么用 transform.localrotation 否则使用 Transform.rotation。如果你的游戏对象没有父对象那么使用这这种方法都可以。...第二步 设置场景 2.1 设置层次结构 首先在层级视图中通过鼠标右键,选择 Create Empty,添加一个空的游戏对象。 重命名这个对象为 Clock。...然后在 Clock 对象上创建 3 个空的子游戏对象,在 Clock 上右键选择 Create Empty。 现在让我们给这个游戏对象一个有意义的名字吧。...设置 Cube 对象 使用这个立方体,我们要显示时钟的动画。 为每一个立方体对象使用下面的位置的缩放。 首先选择特定的立方体对象然后在检视面板中设置这些属性。...degreesInHour 表示一小旋转多少度。 degreesInMinute 表示一分钟旋转多少度。 degreesInSecond 表示一秒钟旋转多少度。

1.8K20

Unity入门教程(下)

两个游戏对象发生碰撞,Mass值较大的物体保持原速度继续运动,相反Mass值较小的物体则容易因受到冲击而改变移动的方向。...十、让小球强烈反弹(设置物理材质) 1,创建物理材质 从项目视图的Create菜单中选择Physic Material,创建一个新材质将其名称改为Ball Physic Material ?...2,修改属性值 在项目视图中选择Ball Physic Material后,在检视面板中选择Bounciness,将其值由0改为1。这个值越大,游戏对象越容易被“弹开”。 ?...(2)游戏刚开始画面上还没有小球。随着玩家角色起跳,可以看到Is_landing复选框由取消变为了选中状态 跳跃过程中Is_landing为取消状态(值为false) ?...通过做一个小游戏项目的流程,让我切身体会到使用Unity开发游戏的大致流程,还有遇到Bug的分析思路。

3.4K30

Unity基础(4)-资源管理知识(1)

脚本放在这个文件夹里,就可以用C#脚本来访问js脚本或其他语言的脚本。 Editor 文件夹 Editor命名的文件夹允许其中的脚本访问Unity Editor的API。...Scripts 文件夹下面一般根据功能划分,辅助类Utils/ 管理UI/ 管理角色Role/ 2、Unity资源下的材质 1:材质 材质某个表面的最基础的材料,木质、塑料、金属或者玻璃等,用于渲染的纹理就是材质...Sprite(2D and UI) : 制作游戏或者虚拟UI界面就要选择这种格式 ?...类似的,天空盒(Skybox )如何在背景显示遥远的风景。内置的反射(Reflective )着色器在Unity使用立方图(Cubemap),以显示反射。 ? Cubemap ?...启用灰度图转成 Alpha (Alpha From Grayscale)(以此创建一个灰度 cookie,Unity 会自动将其转换成一张 alpha 贴图) ?

2.3K20

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

使用同样材质的动态对象上的绘制调用可用于合并和减少DrawCall 要使用它,请转到播放器设置并在播放器中选择Dynamic Batching项设置。...由于动态批处理是一个cpu密集型的过程,因此在将其应用于对象之前必须满足许多条件。主要条件如下。 1.相同材质 2.物体使用MeshRenderer或Particle System进行渲染。...当多次绘制相同的网格(草或树),期望减少绘制调用。 要使用GPU实例化,请转到材质的检查器,并在材质的检查器中单击启用实例化。 创建可以使用GPU实例化的着色器需要一些特殊的处理。...当精度要求较高深度计算使用float,但在颜色计算中,即使降低精度,也很难在结果外观上造成较大的差异。...shadervariantcollection允许你保存游戏使用的着色器变量列表作为资产。它是通过选择“Create -> Shader -> Shader Variant”创建的集合”。

1.7K64

Unity基础教程系列——对象管理(二)对象多样化(Fabricating Shapes)

因此,它不必是组件,不需要将其附加到游戏对象上。相反,它可以单独存在,不是作为特定场景的一部分,而是作为项目的一部分。换句话说,它是一种资产。...3 材质多样性 除了改变衍生对象的形状,我们还可以改变它们的组成。目前,所有的形状使用相同的材质,这是Unity的默认材质。我们可以把它变成随机选择材质。 3.1 三种材质 创建三种新材质。...命名第一个为Standard,保持它不变,以匹配Unity的默认材质第二种命名为“Shiny”,并将其平滑度提高到0.9。第三种命名为metal,并将其金属性和平滑度设置为0.9。 ?...GetRandom方法现在应该选择一个随机的形状和一个随机的材质。所以要使用Random.Range 范围选择一个随机材质标识。 ? ?...使用GetComponent;两次性能并不理想,特别是当我们决定在将来多次改变一个形状的颜色。因此,让我们引用存储在一个私有字段中,并在一个新的Awake方法中初始化它。 ?

1.7K10

为虚幻引擎开发者准备的Unity指南

Unity源文件直接存储在项目中,并在单独的“.meta”文件中包含相关资源的引擎和编辑器特定数据。在后台,Unity 导入的资源处理成优化的、可用于游戏的格式,这是引擎在运行时实际使用的格式。...然后,可以四处移动它,或将其附加到其他游戏对象上。 4.4 组件 Unity 和 Unreal 都使用组件,但由于游戏对象的工作方式,它们的实现略有不同。...单击 Add Component 按钮会显示一个搜索小部件,你可以使用它查找要添加的组件。在这里,你还可以选择 New Script 按钮来立即创建一个新的组件脚本并将其添加到游戏对象。...通过这种方式,可以快速加载较为轻量的描述数据并在整个 UI 中共享,并且仅当玩家在游戏中实际装备药水才加载复杂的预制件。...7.其他引擎属性 7.1 物理和碰撞 Unreal 的模拟和碰撞属性直接内置于原始组件中,它管理与组件交互的通道以及物理材质、质量之类的数据。碰撞边界由组件使用的可视网格定义。

21510

Unity通用渲染管线(URP)系列(二)——Draw Calls(Shaders and Batches)

1.5 转换空间 当所有顶点都设置为零,网格会折叠到一个点,并且不会渲染任何内容。顶点功能的主要工作是原始顶点位置转换到正确的空间。调用时,如果需要,可以向该函数提供可用的顶点数据。...材质检查器中还出现了一个切换选项,使我们可以选择每种材质使用的版本。 ?...GPU实例化仅适用于共享相同材质对象。当它们需要重新覆盖材质颜色,都可以使用相同的材质,然后允许将它们分批绘制。 ?...使用此组件创建一个游戏对象。给它指定了默认的球体网格。 ? (Mesh ball组件) 我们可以生成很多新的游戏对象,但没必要这么做。...可以渲染队列设置为Transparent,但这只是在对象被绘制,提供应该按什么顺序,而不是如何去绘制。 ? (减少alpha值,并且使用透明渲染队列) 不需要编写单独的着色器来支持透明材质

6K51

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

继续创建一个用于分形的材质材质很简单,仅仅使用specular 着色器与默认设置即可,比起漫反射,这个看起来舒服一些。 创建一个新的空游戏对象将其放置在原点。这将是分形的母体。...然后创建一个名为Fractal的新C#脚本,并将其添加到对象上。 ? ? (工程创建) 2 展示内容 脚本有了,那么分形是什么样子的呢?...AddComponent方法可以创建特定类型的新组件,并将其附加到游戏对象,返回对其的引用。这就是为什么我们可以立即访问组件的值。当然也可以使用中间变量。...进入游戏模式,预期的逻辑,这一次会创建四个子孙代。但它们现在还不是真正的孩子,因为它们都出现在层次根节点中。游戏对象之间的父子关系是由它们的转换层次来定义的。...我们将使用一个单一的二维数组来容纳它们,然后在需要材质随机选择一个。这样,当我们进入游戏模式,我们的分形看起来就会有所不同。如果愿意,可以随意添加第三步。 ? ?

1.8K10

简简单单修改游戏对象材质颜色,一起来看看(Unity3D)

二、修改游戏对象材质颜色 2.1 支持修改的材质 首先,你的材质要支持颜色渲染通道,如果都没有颜色通道,再怎么改变都没有用的。...如果游戏对象只有一个材质球,可以这么写: using UnityEngine; public class test1 : MonoBehaviour { public GameObject...void Start() { m_Cube.GetComponent().material.color = Color.red; } } 如果游戏对象有多个材质球...,会导致所有使用这个材质球的物体都改变颜色,而且是永久性修改,在程序结束也不会修改回来。...三、Shader为Particles修改材质颜色 当Shader为Particles可以这么修改材质颜色: using UnityEngine; public class test1 : MonoBehaviour

2.3K10

SceneKitScene Kit 概要节点 (Nodes)光照动画开始用 Scene Kit 写游戏扩展默认渲染流程延时着色

幸运的是 Scene Kit 就好了很多,高级配置对于大多数常见任务是足够的 - 甚至先进的功能,动态阴影和景深效果,使用它提供的上层 API 来配置,就已经足够了。...几何模型对象 Scene Kit 内建了几种简单的几何模型,盒子、球体、平面、圆锥体等,对于游戏,一般都会从文件中加载3D模型。...如果一个从文件里加载的场景可以全部显示将其设置成SCNView 的 scene 就好了。...rootNode.addChildNode(knight) } 这是一个对导入文件原始节点的引用,其中包含了任一和每一个子节点,也包括了模型对象 (包括其材质),光照,以及绑定在这些节点上的摄像机。...比如,下面的 GLSL 代码被用在模型数据的入口点中,可以模型对象上所有点沿 x 轴扭曲。这是通过定义一个函数来创建一个旋转变换,并将其应用在模型的位置和法线上。

1.5K80

从零开始学Unity游戏开发

Unity是一款强大的游戏引擎,可以用来创建各种类型的游戏,从简单的2D游戏到复杂的3D游戏。如果你对游戏开发感兴趣,从零开始学习Unity可能是一个很好的选择。...学习Unity基础知识 学习Unity游戏开发的第一步是学习Unity的基础知识,包括如何创建场景、添加游戏对象和组件、创建材质等。...学习C#编程语言 Unity游戏开发需要使用C#编程语言,所以学习C#编程语言也是学习Unity的重要一步。可以通过在线教程、书籍或者课程来学习C#编程语言。...发布游戏 最后,完成游戏后可以发布到不同平台,PC、移动设备或者游戏机。可以参考Unity官方文档和社区资源来了解如何发布和销售自己的游戏。...总之,从零开始学习Unity游戏开发需要耐心和毅力,但是一旦掌握了基础知识和技能,就可以创作出自己的游戏,并且将其发布到全世界的玩家面前。

74740

项目优化之优化技巧进阶(Unity3D)

渲染队列小于等于2500,unity认为其是不透明的,对于不同材质但z值相同对象,unity不对其进行排序,这样能保证相同材质的多个对象能是一个批次,不同材质对象如果进入两个相同材质对象之间,不会打破批次...;   渲染队列大于2500,unity会对不同材质对象进行排序,此时如果不同材质对象进入到两个相同材质对象之间的话,会使相同材质对象批次被打破。   ...多个纹理进行打包成图集是为了减少材质,这样多个对象共享一个材质,并进而使用同一个纹理和shader,触发unity的动态批次。...内存垃圾是当前废弃数据所占用的内存,垃圾回收(GC)是废弃的内存重新回收再次使用的过程。   ...这里的几何体就是组成场景中对象的网格结构。 3D游戏制作都由模型制作开始。

1.9K20

Unity性能调优手册2基础:硬件,渲染,数据,Unity如何工作,C#基础,算法和计算复杂度

非对称核是同时具有高性能核和节能核的cpu。 非对称核的优点是,通常只有省电的核被用来节省电池电量,当性能需要,比如在游戏中,核可以切换。...C#与Runtime 当开发者在Unity中创造游戏,他们会使用c#去编程行为。c#是一种编译语言,因为在Unity中开发游戏它经常被编译(构建)。...例如,当GameObject.transform是从c#中调用的,所有游戏执行状态(场景状态)都是在引擎中管理的,所以首先要进行本地调用以访问本地区域中的内存数据,然后值返回给c#。...因此,加载资源有两种主要方式:通过指定路径在Unity引擎端加载它们,或者通过原始数据(字节数组)直接传递给引擎。如果指定了路径,c#端不会消耗内存,因为它是在本机区域加载的。...它同时搜索堆上的所有对象,并删除所有已经存在的对象解引用。换句话说,取消引用的对象被删除,从而释放内存空间。 有各种各样的垃圾收集器算法,但Unity默认使用Boehm GC算法。

53031
领券