在做屏幕相关效果时,不可避免地我们要对相机画面做修改,但是你去修改的相机是哪个?如果不做处理,可能会scene有效果,game没效果。

//每个相机自己的对应对象
private class MyCameraData
{public Material material;//销毁管理public void Dispose(){if (material != null){SafeDestroy(material);material = null;}}
}
private static Dictionary<Camera, MyCameraData> cacheData = new Dictionary<Camera, MyCameraData>();private MyCameraData GetData(CameraData cameraData)
{var camera = cameraData.camera;if (!cacheData.TryGetValue(camera, out var data)){data = new MyCameraData();cacheData.Add(camera, data);}return data;
}public override bool Execute(ref CameraData cameraData, CommandBuffer cmd, RenderTargetIdentifier source,RenderTargetIdentifier destination)
{//根据相机属性创建对应datavar data = GetData(cameraData);if (!GetMaterial(data)) return false;//TODOcmd.Blit(source, destination, data.material);return true;
}public override void Cleanup()
{base.Cleanup();Dispose();
}
protected override void OnDestroy()
{base.OnDestroy();Dispose();
}//获取指定shader
bool GetMaterial(PerCameraData data){if (data.material == null){var MyShader = Shader.Find(shaderTag);if (MyShader == null){Debug.Log($"Check for missing shader {shaderTag}");return false;}data.material = CoreUtils.CreateEngineMaterial(Shader.Find(shaderTag));}if (data.material == null){Debug.LogWarning("Missing material. effect will not Active. Check for missing shader");return false;}if (!data.material.shader.isSupported) return false;return true;}private static void SafeDestroy(Object obj)
{if (Application.isEditor){DestroyImmediate(obj);}else{Destroy(obj);}
}
private void Dispose()
{foreach (var MyCameraData in _cacheData){MyCameraData.Value.Dispose();}_cacheData.Clear();
}

Unity scene game 屏幕效果相机管理学习相关推荐

  1. 【Unity】U3D TD游戏制作实例(三)相机管理器、生成敌人优化、敌人血槽小组件

    文章目录 相机管理器 调整相机 敌人类优化 融合导航测试代码 敌人移动速度 销毁对象 加载敌人配置 敌人生成方式优化 血槽组件 相机管理器 调整相机 首先将主相机调整为正交镜头,这样可以防止模型畸变. ...

  2. unity 模型渐变消失_Unity 雨水滴到屏幕效果

    文章目录 前言 一.实现过程 1.代码 2.代码分步解析 总结 参考 前言 本文主要介绍用unity实现雨水滴到屏幕的效果,文章介绍的是基础实现,读完这篇文章再去实现复杂效果会更得心应手些.我们先看更 ...

  3. unity 随机数_Unity 雨水滴到屏幕效果

    文章目录 前言 一.实现过程 1.代码 2.代码分步解析 总结 参考 前言 本文主要介绍用unity实现雨水滴到屏幕的效果,文章介绍的是基础实现,读完这篇文章再去实现复杂效果会更得心应手些.我们先看更 ...

  4. Unity 雨水滴到屏幕效果

    文章目录 前言 一.实现过程 1.代码 2.代码分步解析 总结 参考 前言 本文主要介绍用unity实现雨水滴到屏幕的效果,文章介绍的是基础实现,读完这篇文章再去实现复杂效果会更得心应手些.我们先看更 ...

  5. Unity基础:粒子效果面板

    如何在Unity中实现粒子效果? 首先,右键点击 Hierarchy栏,选择effects->Particle System,这样你就新建了一个粒子系统,如图所示: 下面来介绍右侧监视器(Ins ...

  6. 【Unity】1.3 Unity3D游戏开发学习路线

    一.基本思路 第1步--了解编辑器 首先了解unity3d的菜单,视图界面.这些是最基本的基础,可以像学word操作一样,大致能明白有几个菜单,几个基本的视图,各自起什么作用就可以了.当然还要了解人物 ...

  7. 【转】Unity Scene场景自定义坐标轴

    [转]Unity Scene场景自定义坐标轴 来自:https://blog.csdn.net/cheng624/article/details/70859054 多看看别人的代码是没有坏处的,即使学 ...

  8. 如何使用unity制作雷达探测目标效果动画

    如何使用unity制作雷达探测目标效果动画 如何用unity制作动画或者可以展示的软件 因为如今许多制作软件的引擎,虚幻,unity,寒霜等,unity更加便捷. 在官网www.unity3D.com ...

  9. Unity Pro builder创建模块化仓库建筑学习教程

    Unity内部的专业3D编辑工作室 你会学到: 直接在Unity内部学习3D建模 使用专业构建器的专业方法 为您的游戏创建模块化资产 了解如何为您的三维模型设置纹理 三维资产的模块化布局 专业后期制作 ...

最新文章

  1. Hyper-V 2016 系列教程25 配置NFS 存储服务器
  2. 中标麒麟mysql导数据_中标麒麟(linux)mysql配置记录
  3. java循环控制_Java - 循环控制(Loop Control)
  4. java 桥 word_java导出word的6种方式(转发)
  5. .NET进行客户端Web开发又一利器 - Ant Design Blazor
  6. C# 9.0 新功能一览
  7. pytorch 模型同一轮两次预测结果不一样_2020年的最新深度学习模型可解释性综述[附带代码]...
  8. mysql如何安装 centos7_如何解决centos7上mysql安装及问题
  9. 变量的引用类型和非引用类型的区别
  10. ecshop二次开发笔记
  11. 席位、交易单元、交易网关是什么
  12. Postman:脚本应用_pm对象
  13. POP3 SMTP 协议分析
  14. flashpaper
  15. Skywalking链路追踪自身耗时和总耗时算法分析
  16. sapjco3使用详解
  17. EventBus3 简单使用及注意点
  18. 给点建议!开源项目架构选择!仿腾讯IM后端项目!InChat!
  19. WebRTC音视频原理
  20. 闪光法测量高导热碳化硅(4H-SiC、6H-SiC)圆晶中存在的问题

热门文章

  1. APM-MP日志分析参数索引
  2. 心田花开:五年级语文上册《圆明园的毁灭》知识点及练习题
  3. 产品上新需要注意什么 总结的思维导图分享给大家
  4. C语言程序计算星期几,怎样用c语言程序计算每月的一号是星期几
  5. 什么是嵌入式软件工程师?需具备哪些能力?
  6. 终于找到了老游戏digger
  7. HDLbits笔记-移位寄存器
  8. 编译原理的FIRST、FOLLOW、FIRSTVT、LASTVT的求法总结
  9. row_number()函数详解
  10. PDF怎么转换成excel免费?快收藏这几个方法