-
Unity游戏性能优化整理
前言以下是我看书和网上资料整理出来的。由GitMind里面输出为下图。Unity游戏性能优化…
-
AmplifyShaderEditor——Smear
效果图原理大致的步骤:1.用模型当前的世界坐标和模型前一个位置的世界坐标,计算出每个顶点运动的方向,并将模型运动方向的背面凸出来。先对两个向量(模型上的点到模型基准点的向量、前一帧模型上的该点到现在模型上的该点的向量)求夹角(dot)。2.将凸出来的坐标从世界坐标转换到局部坐标,然后对局部坐标的顶点位置进行偏移即可。具体代码文件:1.smear.cs:用于设置模型的当前位置和上一帧的位置,然后传给材质。2.SimpleMoveExample.cs:用于让模型运动起来,运动的范围是在以初始模...…
-
AmplifyShaderEditor——MultiPassDistortion
效果图shader源码Shader "ASESampleShaders/MultiPassDistortion"{ Properties { _DistortionAmount("Distortion Amount", Range( 0 , 0.1)) = 0.292 _DepthFadeDistance("Depth Fade Distance", Float) = 0 _TextureSample1("Texture Sample 1", 2D) = "bump" {} _Ti...…
-
AmplifyShaderEditor——CustomRTRain
效果图原理这个效果主要是利用了自定义渲染纹理来实现的,核心的shader是:CustomRTRainUpdate。这个shader主要用于自定义渲染纹理的更新材质上。具体雨滴涟漪实现方法,暂时先不研究了,等以后有需求的时候再研究。这个涟漪的实现参考相关链接地址:https://www.shadertoy.com/view/ldfyzlhttp://www.ctrl-alt-test.fr/http://developer.download.nvidia.com/books/HTML/gpu...…
-
AmplifyShaderEditor——XRay
效果图shader源码Shader "ASESampleShaders/XRay"{ Properties { _ASEOutlineWidth( "Outline Width", Float ) = 0 _TextureSample0("Texture Sample 0", 2D) = "white" {} _XRayPower("XRayPower", Float) = 0 _XRayColor("XRayColor", Color) = (0,0,0,0) _XRaySca...…
-
LoxodonFramework学习一周小结
最近一周晚上断断续续看了看LoxodonFramework,周末还基于此框架开发了个玩法很简单的连连看游戏。官方给的文档里面已经把框架介绍的非常清楚了,用法覆盖的也比较全面,MVVM特点也体现很充分。自己在文档上的笔记。…
-
使用LoxodonFramework踩过的一些坑
一些需要注意的地方,记录一下1.UI的prefab中需要添加Canvas Group组件,不然UIprefab会创建在Hierarchy的根节点,而不是自己想要的地方。具体原因还没看源码,应该跟内部实现有关。…
-
游戏客户端的自我修养
感想 客户端在写界面的时候,一定要考虑一个问题,即使服务器端没有数据发过来的情况下,界面不能崩或者报错。这样就相当于给服务器背锅,所以做好这一点很重要。 最近背包系统一直在改动,宠物背包原本是场景里的一个箱子,策划要求改到人物身上,成为人物身上的一个背包。最直观最本质的做法就是让服务器那边把宠物背包加到人物身上。但是服务器说这样调整起来服务器代码超级麻烦,涉及到很多模块。于是,我妥协了,客户端这边我就特殊处理,每次打开背包的时候,我就发起一个打开箱子的请求,然后开启宠物背包。走的是原来...…
-
fairygui相关的分析文章收集
FairyGUI使用经验分享FairyGUI的使用技巧和优化建议…
-
Unity开发中遇到BUG解决方案(1)
1.问题描述打开unity后报错:“An error occurred while resolving packages:Package com.unity.render-pipelines.lightweight@2.0.3-preview has invalid dependencies”2.解决方案删除工程目录Packages文件夹中的manifest.json,让unity重新自动生成即可。…
-
fairygui源码阅读(4)——Timer
TimerFairyGUI里面有个很实用的计时器引擎(Timer Engine)。例如:让某个窗口打开之后,过几秒自动关闭的功能就可以用计时器,把关闭窗口的函数放到计时器里,设好关闭的时间即可。这个计时器的基本原理是,创建一个不在hierarchy里显示的GameObject,名叫[FairyGUI.Timers]。这个GameObject上挂载着计时器引擎脚本TimerEngine,这个TimerEngine是继承于MonoBehaviour的,在Update函数里会调用计时器引擎里面存...…
-
fairygui源码阅读(3)——GObjectPool
GObjectPool这是FairyGUI里面的对象池,主要用于GList。/// <summary>/// Callback function when a new object is creating./// </summary>/// <param name="obj"></param>public delegate void InitCallbackDelegate(GObject obj);/// <summary>//...…
-
fairygui源码阅读(2)——GList
GList中自己平时用的多的地方探索1.管理列表内容文档说明官方介绍在此:管理列表内容源码探索GList内建了对象池,这个对象池对应于GObjectPool类。目前FairyGUI用到对象池的地方只有GList。这个对象池的初始化,需要传一个UnityEngine.Transform对象。FairyGUI也提供了GList对象池的只读属性itemPool。…
-
irrlicht源码剖析系列(3)
自己在知乎上发表的3篇关于irrlicht的文章 …
-
fairygui源码阅读(1)——开篇
前言源码下载地址:https://github.com/fairygui/FairyGUI-unity这一系列的文章都是基于2020/02/27的FairyGUI-unity版本。目录结构FairyGUI的源码都在Scripts文件夹中,里面有: Core文件夹。底层核心类。 Event文件夹。消息系统相关。 Filter文件夹。特效相关? Gesture文件夹。交互手势相关。 Tween文件夹。动画相关。 UI文件夹。UI相关。 Utils文件夹。工具类。接下来的安排对于源...…
-
irrlicht源码剖析系列(2)
用visual studio调试的方法 先用visual studio(我用的版本是VS2013)打开源代码文件夹irrlicht-1.8.4 —— source —— Irrlicht里面的项目文件。 然后创建一个测试项目,用于irrlicht源码的调试。将Irrlicht源码项目的dll文件与pdb文件的输出目录放在此测试项目的exe输出目录中,即可开始调试。…
-
irrlicht源码剖析系列(1)
irrlicht源码版本说明irrlicht-1.8.4源码,下载地址源码的代码物理结构图片源码特点 采用接口与实现分离的设计模式 以I开头命名的都是接口,以S开头命名的为结构体,以C开头命名开头的为实现类。…
-
Shadow Map算法非阴影的应用
阴影图(Shadow Map)算法原本是用于计算阴影的算法,也是现在使用最为广泛的阴影计算方法。由于我自己研究生期间的研究领域是计算机图形学中的3D模型与实时视频的虚实融合,其核心算法就是Shadow Map。 有必要先说明一下什么是虚实融合。开头放张图好像比较符合江湖规矩… 上图就是3D模型与实时视频虚实融合的最终效果gif。所谓的虚实融合就是虚拟的3D模型数据(对现实场景建模得来)和现实的视频(与模型数据相同地点的摄像头视频数据)融合。数据准备 3D模型数据。如下图。 摄像...…
-
UGUI源码阅读系列(1)
Unity的ugui是作为一个插件放在Unity里面的,所以没有ugui,unity也一样能正常运行。基于这一点,用以下方法进行UGUI源码调试,会非常方便。0. 准备工作 根据自己电脑上的Unity安装目录,找到UGUI存放的地方。进入此目录(我电脑上的目录是D:\Program Files\Unity\Editor\Data\UnityExtensions\Unity)。 Unity目录下的GUISytem文件夹就是UGUI存放的地方。 首先,备份此文件夹。 然后,删除此文件夹...…
-
unity的2d触发器和3d触发器不会触发的问题
记录今天遇到的一个问题:场景中有个2d GameObject,身上挂着Box Collider 2D(勾选了is trigger)和rigidbody2d,还有一个3d GameObject身上挂着Box Collider 3D。在2d物体身上的脚本中写了OnTriggerEnter2D,但是总是不能进这个函数。后来把3d GameObject身上挂着的Box Collider 3D,换成了Box Collider 2D,就好了。原因应该是:2d触发器只能和2d触发器搭配使用,3d触发器只...…