关于unity中如何代码动态修改天空盒

流星与蝴蝶 流星与蝴蝶     2022-09-10     296

关键词:

在Unity中动态修改天空盒有两种方法:

一、为每个Texture建立天空盒材质球,需要更换时直接将对应材质球作为天空盒,缺点是建立的材质球太多

 

    private void ChangeSkybox(Material newSkybox)
    {
        RenderSettings.skybox = newSkybox;
    }

 

二、只创建一个天空盒材质球,通过修改Material的贴图Cubemap来动态替换,优点是不需要创建额外的材质球

  但是使用一般的Material.mainTexture属性无法赋值Cubemap类型的贴图。

  通过查阅Unity - Scripting API,找到一个修改Material的Texture的方法:Material.SetTexture(string name, Texture value)

 

  我们发现通过指定其中的参数name可以获取对应的贴图位置。但是并没有说明Cubemap的参数是什么。因此只能去查看Shader的Property。

选中创建的天空盒材质球,右键点击Shader选择Edit Shader...,打开Shader的详细信息,如下图所示

 

在打开的Shader详细信息中我们发现了在Properties有这样一行

原来Cubemap的name参数应该填的是“_Tex”,name参数其实指的是Shader中对应的Property属性。

所以通过以下方法可以动态更换天空盒的Cubemap贴图

1     private void ChangeSkybox(Texture texture)
2     {
3         RenderSettings.skybox.SetTexture("_Tex", texture);
4     }

 

在unity场景中更改天空盒的步骤

...属性为Skybox/6Sided,并且把六个面的图片都选好 三、修改天空盒在菜单栏Window属性下,选中Lighting->settings,会出现下面对话框  查看详情

unity3d中c#如何修改物体局部的颜色

...变整个的颜色,如果只是想改变一个局部范围内的颜色该如何做参考技术A修改天空盒颜色的例子(C#):usingUnityEngine;usingSystem.Collections;publicclassexample:MonoBehaviourpublicColorcolorStart=Color.blue;publicColorcolorEnd=Color.green;publicfloatduration=1.0F;voi... 查看详情

关于unity中天空盒的使用

天空盒是一个盒子,一个正方形的盒子。其实本身也是一种shader,需要材质球做载体。1:一个场景是由6幅正方形的纹理图无缝拼接而成,在视野看来位于真实的视野一样;2:两种天空盒:  场景天空盒Window->Lighting->Scene->Skybox... 查看详情

OpenGL中天空盒的程序/动态着色

...ormapsush,如下所示:现在,根据某些变量(例如时间),代码会以某种方式扫描 查看详情

unity运行状态下动态保存预制体/预制体上脚本参数(代码片段)

...时直接保存调整好的预制体在此背景下,出现了以下代码:一.运行状态下动态保存预制体代码:publicclassChangePrefabs:MonoBehaviourpublicboolSave=false;publicstringName;privatestringpath;voidStart()Name=this.gameObject.name;path=string.For... 查看详情

如何在 Unity 中测试 Firebase 动态链接?

】如何在Unity中测试Firebase动态链接?【英文标题】:HowdoyoutestFirebaseDynamicLinksinUnity?【发布时间】:2019-02-1312:09:15【问题描述】:根据FirebaseUnity文档,您只需要添加Firebase动态链接SDK,然后像这样监听传入链接即可捕获动态链接... 查看详情

unity摄像机画面制作全景图片|截图制作全景图(代码片段)

...第一次使用Markdown编辑器所展示的欢迎页。如果你想学习如何使用Markdown编辑器,可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。效果展示unity的场景生成的图片Unity编辑器中使用脚本部分[MenuItem("生成图片/CreatPic&#... 查看详情

unity3d代码动态添加,修改boxcollider2d

BoxCollider2Dbox=gameObject.AddComponent<BoxCollider2D>();box.size=newVector2(1.0f,1.0f);//默认size很小,需要初始化否则检测不到东西unity2018版本默认加载的package可以通过更新路径D:ProgramFilesUnityEditorDataResourcesPackageManagerEditormanifest.json里面字段d... 查看详情

go的100天之旅-03变量(代码片段)

变量变量介绍变量这个词来源于数学,类似方程中的x、y,代表的是存储在计算机中的值。这里主要介绍Go和其它编程语言不一样的地方,在前面我们提到过,Go是一门静态语言。静态语言区别动态语言一个重要的特性就是变量的... 查看详情

如何在 WindowsStoreProxy.xml 中动态设置日期

...布时间】:2016-01-1802:56:36【问题描述】:我正在阅读一些关于如何为windowsphone8.1应用程序启用试用版的教程,但我有一个问题,我无法在任何地方找到答案,如何设置(应用安装的当前日期)+30天作为到期日期。它总是被称为像... 查看详情

关于mfc中ribbon界面如何修改标题属性问题

最近在工作中,遇到了需要将软件从中文转成英文的问题。通常来说,MFC界面上的控件均可以用SetWindowText来解决。但对于Ribbon,往往不怎么好使。也是从网上找了很多资料,最终总结如下。先上效果图中文版:英文版:如图中... 查看详情

unity2017.3.1f1api过时,求问如何修改?

出错代码以及提示,但是不知道如何修改,按提示修改还是出错修改Emission:之前使用直接修改ParticleSystem的emissionRate属性,现在要通过修改ParticleSystem.emission.rateOverTimeMultiplier(我这里修改的是RateOverTime并且是Constant形式)。直接对... 查看详情

如何从最近两天创建或修改的表中获取行?

】如何从最近两天创建或修改的表中获取行?【英文标题】:HowcanIfetchrowsfromatablethathavebeencreatedormodifiedinthelasttwodays?【发布时间】:2017-02-0113:07:54【问题描述】:我有这张桌子:CREATETABLE[dbo].[Phrase]([PhraseId]UNIQUEIDENTIFIERDEFAULT(newid(... 查看详情

关于unity中鼠标选取物体的解决方案

今天修改了之前写的飞机大战的代码,原来的不足之处是点击屏幕的任意一点都可以移动飞机,也就是没有检测鼠标到底有没有点到飞机上。我先是用之前的3D拾取技术,发现没有反应,才意识到我这个plane飞机节点挂载的是BoxCo... 查看详情

zendstudiosvn相关操作中,如何查看某一天项目中修改的所有文件。

或者某一天某一个路径下修改的所有文件。参考技术A点击项目--》右键--》SVN--》搜索历史记录 查看详情

unity学习-优化_图集归类以及unity和texturepackter的动态批处理(代码片段)

...实现起来不用多久。但是发现如果将某些功能运用在商业代码上,为了提高效率,要做很多前期工作。这几天一直在学习游戏开发优化方面的技巧,感觉都很片面,实际的LOD和MipMap这些功能只有在一些需要大量摄像机移动的场景... 查看详情

关于unity中steamvr_controller.input的错误

当我在看某鸥的视频的时候,里面讲到用Unity做一个贪食蛇后,加入SteamVR插件,并且能用手柄控制蛇的移动.当我跟着上面一步一步做的时候,发现我代码都写完后,启动报错,而视频里面的老师讲的缺没有报错.后来我修改了一下原本报... 查看详情

unity3d关于贝赛尔曲线,平滑曲线,平滑路径,动态曲线

http://tieba.baidu.com/p/2460036481很多时候我们需要的并不是直线和折线,而是平滑的曲线,比如寻路系统,某些物体的曲线运动,都需要平滑曲线来保证效果,今天试了一下,通过iTweenPath利用的贝赛尔曲线可以很好的实现平滑曲线,下面上图,... 查看详情