Unity post processing stack(v1版本)脚本控制

环境:Unity5.6.2,post processing stack

注意:post-processing stack是从AssetStore上下载的v1版本,而并非stack2版本,stack2版本在unity2018的packagemanager中可以直接下载安装

首先,在相机上绑上PostProcessingBehaviour这个脚本


在Project视图中右键->Create->Post-Processing Profile

并赋值到post processing behaviour的Profile上

选中刚刚新建的Post-Processing Profile文件

在Inspector面板中就可以进行设置了

那如何通过代码来进行控制呢?
这里有坑啊,而且与以前的ImageEffects是不同的

首先当然要获取这个PostProcessingBehaviour

PostProcessingBehaviour ppb=GetComponent<PostProcessingBehaviour>();

然后要获取创建的这个profile文件对象

var profile = ppb.profile;

再获取这个Color Grading效果

var colorGrading = profile.colorGrading;

获取它上面的设置

var settings = colorGrading.settings;

然后坑就来了,先看下图
以Color Grading这个效果为例:

它的面板中其实又分了几部分
Tonmapping和TrackBalls可以不管
有Basic, Chanel Mixer 还有Grading Curves

按照正常思维,在settings后面直接点,OK是可以的
本例我们设定要修改的是Basic部分中的Post Exposure(EV)的值
可以直接点出basic,再直接点出PostExposure都是没问题的,甚至可以直接赋值

settings.basic.postExposure = -1.2f;

没有问题,也不会报错,但运行程序,没有任何效果,面板中post exposure的值也没有变化。
这就是坑所在了。

正确的做法是,new 一个settings,把里面的post exposure值改掉,再赋给ColorGrading组件

var settings = new ColorGradingModel.Settings() ;
colorGrading.settings=settings;

而new一个settings只修改里面的exposure值,依然有坑

如前图所示,Color Grading面板中分为几个部分,有basic, Chanel Mixer还有Grading Curves
但是new 出来的settings里面其实基本上是空的,所以所有的这一切都要赋值,不然会报错
赋值就在new 的时候一并进行
而既然其它部分不变,则用之前点点点的方式获取,并赋给这个新建的settings,最后再将settings整个赋值回去

var scurves = ppb.profile.colorGrading.settings.curves;
var schannelMixer = ppb.profile.colorGrading.settings.channelMixer;
var settings = new ColorGradingModel.Settings() {
    basic = {postExposure = -1.2f, contrast = 1, saturation = 1, hueShift = 0, tint = 0, temperature = 0 }  ,
    curves = scurves,
    channelMixer = schannelMixer
}

这样new 出来一个settings最后再赋值回去

ppb.colorGrading.settings = settings;

如此修改才能生效,而之后再对值进行修改的话,直接在新建的settings上点出属性,直接赋值,再把settings赋值回去

settings.basic.postExposure = 10f;
ppb.colorGrading.settings = settings;

也就是每次修改,改的是你新建的settings,但最后还是要把整个settings赋值回去才能生效

以上

原文地址:http://blog.51cto.com/shuxiayeshou/2161928

时间: 2024-10-10 13:43:56

Unity post processing stack(v1版本)脚本控制的相关文章

Unity模拟龙之谷人物行走简单控制

我个人挺喜欢龙之谷(DN)的人物控制的(不是广告哈....),就是人物太萌了一点,动作.打击感都挺好的. 今天用Unity简单模仿了一下DN的人物控制,当然,游戏里面动作很多,我这里只做了简单的walk和run的测试哈,但是感觉也蛮舒服的,哈哈. 期待的效果:鼠标旋转控制视角位置,滚轮控制镜头缩放.点击一次W键为行走,快速点击两次为奔跑. 1.准给工作: 场景中, 一个Camera.一块地皮.一只Cube 2.镜头的缩放和旋转实现: 看下Camera的组件: 再看下Cube的组件: mousel

Unity3D 学习教程 11 c#脚本控制摄像头

首先新建一个脚本 点击创建一个文件夹起名C# 点击文件夹 创建一个C#脚本 建好文件后 双击文件 启动脚本编辑器 void Start () 是场景运行时加载程序 void Update ()  是每调用一针执行一次  可以认为是试试执行的程序 下面编写第一个脚本 控制摄像机移动 using UnityEngine; using System.Collections; public class acc : MonoBehaviour { int speed=50; void Start () {

Unity3D教程宝典之光影烘焙:第四讲脚本控制

上一讲讲了用Light probes实现动态物体的非实时阴影,这一讲讲用代码实现代码实现动态物体的非实时阴影. 实现步骤:(1)新建一个场景,并建一个plane作为大地(2)创建Cube并缩放成扁平面后.复制Cube并旋转拼接搭建成一个敞篷.(3)讲上述物体设置static并烘焙.(4)创建一个player.这里用的unity自带的Character Controller包里的 3rd person controller这个prefab,拖进敞篷边.在该人物下找到Bip001 Pelvis这个节

hearbeat集群+V1版本资源管理器(haresources)配置

高可用集群实现方式很多,下面介绍hearbeat集群+V1版本资源管理器(haresources)配置 有几个注意事项: 1.  双方要同步时间,可以做定时任务 [[email protected]]# crontab -e */4 * * * */usr/sbin/ntpdate 172.16.0.1 &>/dev/null 2.  节点之间必须要通过主机名互相通信,建议使用hosts文件,节点的名字要与"uname –n 命令保持一致" [[email protect

【HTML5】用脚本控制交互元素details元素的使用

1.源码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Con

unity中三种调用其他脚本函数的方法

第一种,被调用脚本函数为static类型,调用时直接用  脚本名.函数名().很不实用-- 第二种,GameObject.Find("脚本所在物体名").SendMessage("函数名");  此种方法可以调用public和private类型函数 第三种,GameObject.Find("脚本所在物体名").GetComponent<脚本名>().函数名();此种方法只可以调用public类型函数 unity中三种调用其他脚本函数的

如何从ToughRADIUS V1版本迁移数据到 ToughRADIUS V2版本

由于 ToughRADIUS V2版本 是一次打破兼容性的重构,数据结构并不完全兼容,因此对V1版本的数据迁移到V2版本,我们加入了特殊的数据转换支持. 迁移步骤 登陆 ToughRADIUS V1版本的系统管理控制台,进入到数据备份管理界面,执行数据备份,然后下载最新的备份文件. 修改下载的备份文件,在文件名中加入trv1四个字符,比如改名后变成 trv1_toughradius-xxxxx.gz这样的名称. 进入ToughRADIUS V2版本的管理控制台,进入数据备份管理功能界面,上传改了

ELK Stack最新版本测试二配置篇

阅读本文前请浏览 ELK Stack最新版本测试一安装篇 http://jerrymin.blog.51cto.com/3002256/1720109 详细配置如下: 一,客户端 1,nginx日志格式 log_format logstash_json '{ "@timestamp": "$time_iso8601", '                         '"host": "$server_addr", '  

用脚本控制虚拟机

#############用脚本控制虚拟机 给file.sh 一个权限 chmod +x file.sh