在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贴图

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

最新文章

  1. javascript关闭页面
  2. UIWindow
  3. has no parameters and arguments were supplied
  4. IOS彩票第二天设置界面(2)
  5. 主页面获取iframe 的子页面方法。
  6. 转载 sqlserver 锁的概念
  7. exp/imp使用
  8. 关于php的flush在本机正常在服务器不灵的问题
  9. c# 实体类生成工具
  10. Gradient Boosted Regression
  11. 开发 chrome 扩展 GitHub-Remarks 的一些想法以及遗憾
  12. linux 值安装yum包
  13. nginx location反向代理不对等时的处理
  14. mysql5.7 版本中 timestamp 不能为零日期 以及sql_mode合理设置
  15. Java之CountDownLatch使用
  16. 常用模块(json/pickle/shelve/XML)
  17. Unity3d 常用的方法
  18. 推荐11个实用Python库
  19. swfupload js中 file 对象的属性
  20. 二进制求和(LintCode)

热门文章

  1. org.apache.subversion.javahl.ClientException: Attempted to lock an already-locked dir
  2. asp.net+jQueryRotate开发幸运大转盘
  3. 生物结构变异分析软件meerkat 0.189使用笔记(一)
  4. 2016-2017 CT S03E06: Codeforces Trainings Season 3 Episode 6 The Baguette Master
  5. filter()和find()的区别
  6. 异常-----spring明明注入了Service到Action中,为什么运行的时候Service为空,在抽象类中,有子类来继承的
  7. 手机端仿ios的银行下拉脚本五
  8. 关于html5 data-*自定义属性相关注意点和踩过的坑
  9. Unity3D基本操作教程
  10. java保留小数点后位数以及输出反转数字