unity
文章平均质量分 83
刘峰1011
....
展开
-
unity 中带贴图以及动画的模型文件转为 lowpoly 风格的方法
这里的内容是在这篇文章的基础上进行的修改:https://blog.csdn.net/final5788/article/details/50574055原文章中主要是没有提到UV以及骨骼与定点的绑定方法。由于实现lowpoly的风格其实就是将原来的1个点复制为多个点,所以我们只要在复制定点的过程中将相应的顶点属性一同复制即可。这里直接给出完整代码:using UnityEngine;using...原创 2018-05-11 10:18:35 · 4402 阅读 · 1 评论 -
unity excel配置表导出工具
很久之前写的一个工具,用于把excel导出为二进制文件,供游戏读取。完整项目在我的github中:https://github.com/LiuFeng1011/Test/tree/master/Assets/ExcelTools使用方法将ExcelTools放在项目Assets文件夹中创建配置表:同一张表中可以有多个工作簿,第一行为注释,程序中不会读取,第二行为字段原创 2018-02-06 21:56:00 · 6529 阅读 · 1 评论 -
unity NGUI 中ScrollView大量物体的优化方式:重用item
不管是游戏还是软件,列表(ScrollView)都是算是最常用的控件之一。列表中的内容少的几个,而多的时候几千上万个,这时候如果我们不对列表进行优化,直接加载所有物体肯定是不现实的。当然这个问题的优化策略网上也不少,最多的就是重用item,大概看了一些,不是做的非常复杂就是说的含糊不清,所以这里自己动手写了个demo,简单易懂,代码量很少,一共100多行代码,这里分享出来。基本思想就是当列表向原创 2018-02-06 16:25:47 · 2938 阅读 · 3 评论 -
unity中实现一个类似x光扫描效果
先来看下效果:原理很简单,首先获取顶点到摄像机的观察方向,然后与顶点的法线方向进行点积算出投影的长度最后再乘以我们设置的颜色值即为最终要输出的颜色。这里要注意观察方向与法线方向要进行归一化。shader代码:Shader "Custom/XLight" { Properties { _Color ("Color", Color) = (1,1,1,1) _MainTex ("Albedo...原创 2018-02-26 14:47:59 · 4834 阅读 · 0 评论 -
unity 中实现的一个优先队列(堆结构)
之前在我写的关于A*寻路算法的一篇文章中,提到过可以对open列表进行优化,当时只是使用了List并在插入数据的时候进行排序,很明显这是一个典型的优先队列,所以这里我实现了一个优先队列的类,分享出来。文章最后我会给出完整代码,也可以到我的github中获取完整的算法以及测试代码:https://github.com/LiuFeng1011/Test/tree/master/Assets/Prior...原创 2018-02-26 11:06:21 · 1625 阅读 · 0 评论 -
unity 程序生成mesh并实现2D山丘地形
首先看一下最终效果:这里我假设读者已经了解并知道如何使用Mesh。如果不懂的话可以百度一下,有很多文章。实现起来其实非常简单,思路:每两个顶点为一组,这两个点的x坐标相同,一个在上一个在下,下边的y坐标固定为0,上边的y坐标从曲线编辑器中取值。然后把生成的mesh赋予物体的MeshCollider。下面给出完整代码:using System.Collections;using System.Co...原创 2018-02-10 21:49:41 · 4003 阅读 · 0 评论 -
unity编辑器中使用Gizmos绘制辅助线
前面给大家分享了一个关卡编辑器,但是我们的策划同学反映在摆道具的时候不够直观,坐标总是对不齐,于是就使用Gizmos给策划同学们写了一个辅助线的脚本,分享出来:using UnityEngine;#if UNITY_EDITORusing UnityEditor;#endif[ExecuteInEditMode]public class MapEditor : MonoBehavi原创 2018-02-05 19:16:59 · 7634 阅读 · 0 评论 -
unity 编辑mesh顶点位置
在某些特殊情况下,不得不对模型进行一些简单的修改,所以写了个简单的编辑脚本。思路就是获取mesh上的所有顶点,然后在每个顶点位置创建一个控制点,控制点可以是任意你喜欢的物体,通过判断控制点的位置信息来修改mesh的顶点位置。在unity中,mesh上的顶点与几个面相交,就会有几个坐标点,估计是把点为每一个三角形面复制了一份,所以这里在生成控制点时要注意剔除重复的点,不要重复生成。这里我是把每个顶点...原创 2018-02-10 17:09:49 · 20977 阅读 · 9 评论 -
unity中曲线编辑器AnimationCurve的使用
之前讲了几篇使用贝塞尔曲线的文章,都是直接使用的公式,目的是为了更了解贝塞尔曲线,其实unity中已经提供了非常方便的编辑器,这里我们来看一下如何使用:首先创建一个脚本并声明一个曲线的对象:public AnimationCurve anim;把这个脚本挂到游戏物体上,我们就可以在Inspector面板中看到这个对象:我们双击这个变量后面的黑色部分,就可以打开曲线编辑器了,原创 2018-02-05 18:08:43 · 10047 阅读 · 0 评论 -
unity 使用程序生成Texture2D并创建Sprite,制作渐变背景的效果
之前一篇文章中介绍过如何使用shader实现一个渐变的背景效果,连接:http://blog.csdn.net/zgjllf1011/article/details/79244914这里再介绍一种方法,在脚本中动态创建Texture2D并生成Sprite。首先创建脚本,命名为ScriptTexture.声明一个引用: SpriteRenderer sr;然后在初始化原创 2018-02-05 17:12:57 · 20999 阅读 · 3 评论 -
unity 场景向屏幕中心塌陷的shader
完整代码在我的github中:https://github.com/LiuFeng1011/Test/tree/master/Assets/CollapseTest先来看下效果:shader代码:Shader "Custom/CollapseShader" { Properties { _MainTex ("Maintex", 2D) = "white" {} _Progre...原创 2018-02-13 00:10:42 · 2038 阅读 · 0 评论 -
unity通过降低分辨率来提高游戏运行效率
之前做了一个小游戏,功能很简单,内容很少,但是游戏使用了1个后期shader,导致在一些低端的android机器上连30帧都跑不到,偏偏游戏又要在高帧率下才能有非常好的体验(跑酷类游戏),真是让人头疼,想要优化却没有什么头绪,游戏本身就很小,没啥逻辑,也没啥图,也不想要去掉shader,因为还要靠这个来给游戏效果加分。shader也很简单,没有复杂的运算,就算把shader的所有逻辑去掉,直接原样原创 2018-02-07 17:21:17 · 8677 阅读 · 0 评论 -
unity shader中点光源(point light)的光照衰减处理
unity 的shader提供了2种光照模式:ForwardBase和ForwardAdd。如果我们的shader想要处理多种光照,那么这两种光照模式就都要被实现到不同的pass中。其中ForwardBase中处理的必然是平行光,所以想要处理点光源等其它光源需要在ForwardAdd中进行处理。网上很多讲解点光源的文章,很多都特别复杂或者根本运行不了,其实处理起来非常简单,unity已经给我们提供...原创 2018-03-22 15:03:56 · 9699 阅读 · 3 评论 -
unity中的一个简单易用的A*寻路算法类
以前项目中用到了寻路,就写了个A*寻路的算法类,感觉还不错,这里分享出来。这里有可运行的测试项目:https://github.com/LiuFeng1011/Test/tree/master/Assets/AStarA*算法的原理网上有很多,这里只简单说一下我这个算法的逻辑:*我的这个算法里面没有关闭列表,因为我会根据地图数据创建一个对应的节点数据的数组,每个节点数据记录自己当前的状态,是开启还...原创 2018-02-24 16:55:22 · 2553 阅读 · 0 评论 -
untiy 程序生成一个扇形sprite
最近做一个潜入游戏其中有一些敌人面前会有一个扇形的检测范围,不同的敌人检测范围不同,需要策划同学来自行配置来控制扇形的范围。所以这里就选择了使用程序来成成扇形检测范围的纹理。直接给出代码: /// <summary> /// Generates the sprite. /// </summary> /// <param name="sr"...原创 2018-03-09 12:28:00 · 1987 阅读 · 1 评论 -
判断点是否在扇形范围内
最近做一个潜入游戏其中有一种敌人面前会有一个扇形的检测范围,并且此扇形范围会来回旋转移动,所以就遇到了一个如何判断主角是否在扇形范围内的问题。在网上找了一些方法,但是感觉都太复杂,所以这里自己实现了一下。思路如下:我的扇形的生成方式是从中心方向像两边展开若干角度。所以我们只要算出扇形的中心向量与角色向量的夹脚是否大于扇形的展开角度即可。步骤:扇形的来回摆动是有程序控制,所以这里可以很容易得到扇形当...原创 2018-03-09 11:53:31 · 11327 阅读 · 0 评论 -
unity 中使用HSV 颜色模型进行颜色的随机变化
经常能看到一些游戏中背景或是场景颜色的变换,每次进入游戏都能看到不一样的效果,像我之前介绍的游戏Polyforge一样:实现一个这样的效果,可以直接使用rgb颜色来随机,因为平时我们接触到的大部分都是rgb颜色,但是这样的话带来的效果就是有时候亮有时候暗,甚至有纯白纯黑。而我们想要的是鲜艳一些的,有没有办法只获取色系中的彩色部分呢?这时候HSV颜色模型就派上用场了!关于颜色模型有很多种,这里我就不...原创 2018-02-27 18:25:40 · 4803 阅读 · 0 评论 -
unity 使用超椭圆方程对图片进行裁切制作圆角矩形
今天无意间在网上发现了一个公式,叫做超椭圆方程,效果就是圆角矩形:原文地址:http://blog.csdn.net/tom_221x/article/details/50924154原文中是使用shader来实现,这里我使用这个公式来尝试直接读取图片文件生成sprite。步骤1.读取texture文件Texture2D tex = (Texture2D)Resources.Load(filepa...原创 2018-02-08 00:11:57 · 2371 阅读 · 1 评论 -
unity 接入fyber广告SDK
最近集成fyber SDK,这里记录一下:后台配置方面的内容是其它人弄好的,我没有参与,所以这里不讨论,有需要直接参考官方文档即可:https://unity.fyber.com/docs/welcome1.下载unity 包:https://unity.fyber.com/docs/download-unity-plugin点击最下面的按钮即可下载下载后是个uni原创 2018-02-07 18:28:05 · 4213 阅读 · 3 评论 -
unity 消融效果shader 以及世界空间uv
在腾讯GAD上看到一篇文章http://gad.qq.com/program/translateview/7187984。由于文章中并没有给出源码,所以自己尝试实现了一下,文章最后有完整shader代码。消融效果很简单,只要在fragment中丢弃无效的像素点即可 fixed4 color = tex2D(_MainTex,uv); i...原创 2018-02-27 13:50:56 · 2795 阅读 · 0 评论 -
unity中接入Google Play SDK
参考:Google Play Games plugin for Unity:https://github.com/playgameservices/play-games-plugin-for-unity#paste-the-game-resources-into-the-plugin-setup-dialogSetting Up Google Play Games Services原创 2018-02-07 17:48:15 · 12188 阅读 · 7 评论 -
unity中背景渐变shader对贝塞尔曲线的应用
这里我更新了一篇使用Texture2D实现的文章:http://blog.csdn.net/zgjllf1011/article/details/79261491以下为原文:最近玩了一个游戏叫Polyforge,游戏里是这样的:游戏中的背景会随机的变化,并且周围有一圈渐变的黑边,看上去很舒服,所以决定照着样子实现一个。首先做一个渐变,很简单,2个颜色做插值:retu原创 2018-02-03 22:33:29 · 4110 阅读 · 0 评论 -
Unity使用git管理项目时场景中丢失脚本的问题
之前使用git忽略文件的配置就是忽略了Temp和Library两个文件夹,后来在网上看到一个unity忽略文件的配置,感觉很全,比自己的好多了,于是就拿来用了,文件是这样的:/[Ll]ibrary//[Tt]emp//[Oo]bj//[Bb]uild/# Autogenerated VS/MD solution and project files*.csproj*.unityproj...原创 2018-02-10 11:23:30 · 3261 阅读 · 0 评论 -
unity中xml配置表管理器
核心思想是使用反射把配置表中的数值赋给对象的属性。直接上代码,代码里有比较详细的注释:public static List Load() where T : new(){ //这里要注意配置对象要与配置文件名称相同 string[] names = (typeof(T)).ToString().Split('.'); //获取真实名称 string fil原创 2018-02-01 12:25:18 · 1622 阅读 · 0 评论 -
unity的迷宫生成算法
思路:定义一个二维数组,二维数组中奇数行列视为围墙,偶数为路径。 从起始点开始,随机从上下左右四个位置寻找周围没有被找到过的位置,找到后此点标记为1,并把此点与前一点之间的位置设置为1。 如果全部位置已经找到过,则退回到上一个点重复次逻辑,直到所有点都记录到或 退回到起始点且没有可用点。文章最后我会附上完整代码。下面我们来实现一下 新建一个迷宫生成类:MazeC原创 2018-02-01 11:48:04 · 9170 阅读 · 5 评论 -
游戏中关于跳跃的函数图像的推导以及应用
跳跃应该是游戏开发中一个最常见的功能之一,实现的方法也有很多,这里我来讲一个我以前用的一个方法.正常的跳跃,如果使用物理引擎的话,就直接给一个向上的力就可以了,但是有一些游戏,例如跑酷,角色的移动速度都是越来越快的,而如果还是只给一个向上的力的话,跳跃的距离就会相应的变远,这样肯定是不行的,所以为了让角色能够按照固定的路径来跳跃,我们就需要设计一个函数能够模拟出跳跃的效果。下面我会给出原创 2018-01-31 22:26:21 · 5887 阅读 · 2 评论 -
c#中对int等基础数据类型进行封装加密
为了防止游戏过程中被第三方应用搜索到真实数据信息,我们需要对基础数据类型进行二次封装并加密。基本思想就是设置一个密码,然后与真实数据进行异或操作。为了使用方便,可以对运算符进行重载,这样就可以像使用基本数据类型一样使用了。直接上代码:public struct AHInt{ private static int cryptoKey = 123456; priva原创 2018-01-31 19:04:43 · 1340 阅读 · 0 评论 -
c#中对object进行序列化和反序列化
有时候我们需要对一些数据进行二进制序列化以达到保存或传输的目的,这里记录一下对object的序列化和反序列化操作。首先引入命名空间:using System.IO;using System.Runtime.Serialization.Formatters.Binary;object的序列化和反序列化 public static byte[] SerializeObject(obj原创 2018-01-31 18:32:44 · 16541 阅读 · 0 评论 -
c#使用SharpZipLib对二进制数据进行压缩和解压
首先需要下载SharpZipLib,下载地址:http://icsharpcode.github.io/SharpZipLib/需要引入命名空间:using ICSharpCode.SharpZipLib.GZip;using System.IO;压缩: public static byte[] CompressGZip(byte[] rawData) {原创 2018-01-31 18:10:36 · 6921 阅读 · 1 评论 -
C# 使用base64对字符串进行编码和解码
需要引入命名空间:using System;using System.Text;解码: public static string UnBase64String(string value) { if (value == null || value == "") { return ""; }原创 2018-01-31 17:59:52 · 24904 阅读 · 0 评论 -
C# 二进制数据流工具类
在实际的项目开发中,很多地方都会应用的二进制数据,比如客户端服务器的通信、用户数据的存储以及一些游戏数据的存储。所以写了此类以方便进行类的序列化和反序列化操作。此类包含的大小端的设置,如果只是客户端使用,可以忽略。类名DataStream使用方法1.写数据:DataStream stream = new DataStream(true);write原创 2018-01-31 17:39:29 · 1241 阅读 · 0 评论 -
unity网络通信模块的使用
上一篇分享了一个unity的网络通信模块,这篇来将一下使用方法完整的项目源码在这里:https://github.com/LiuFeng1011/UnityNetWork1.创建协议类NetProtocols客户端与服务器需要提前约定好通信协议以及每个协议的数据。所有的客户端与服务器通信的协议定义在此类里。这里先定义一个TEST协议。public class Net原创 2018-01-31 15:23:49 · 1588 阅读 · 4 评论 -
一个unity的轻量级事件管理器
事件系统的好处很多,最主要的还是能够最大限度的降低模块间的耦合度,这里实现一个很简单的事件管理系统,主要功能就是对事件进行分发,以达到解偶的目的。事件系统很多新手好像不太适应,但是用的多了,就会发现它的神奇之处。直接上代码:public class EventManager : MonoBehaviour{ Dictionary> observerList = new Di原创 2018-02-01 14:11:24 · 2092 阅读 · 0 评论 -
unity地图路径编辑器
游戏开发的过程中,我们经常需要让某些物体按照固定的路线来移动,这时候就需要提供给策划同学们一个路径编辑器来让他们充分发挥"想象力"。。。先来看下最终效果:下面来简单说下实现过程制作路径点首先制作路径点,每一个路径点要记录自己都连接到哪些点,我们用一个数组来记录,所以路径点的脚本应该是这样:public class MapWayPoint : MonoBehavi原创 2018-02-01 16:25:38 · 6960 阅读 · 2 评论 -
unity后期特效shader之photoshop混合模式公式的应用
在网上看到了一些颜色混合模式的公式,链接:https://jingyan.baidu.com/article/36d6ed1f7c04801bcf4883c2.html觉着挺实用的,写个shader来尝试一下看看效果。因为这里都是混合模式,所以需要两张图片,但是我们对摄像机的内容进行后处理,只有1个图层,所以我就把A和B都使用相同内容来处理。很明显A和B图层内容相同的话前两个公原创 2018-02-03 01:45:41 · 5765 阅读 · 0 评论 -
unity中一个类似纪念碑谷里的三角图形组成的海面效果
想要实现一个纪念碑谷中的海面效果,最初的设想是在vertex中,修改顶点坐标来实现,而且也实现出来了,代码:v2f vert(a2v v) { v2f o; float4 offset; offset.xyzw = float4(0,0,0,0); float原创 2018-02-02 17:09:49 · 1671 阅读 · 1 评论 -
使用sin函数实现阻尼动画效果
某款游戏中,有一个combo的功能,需要弹出一个combo的ui,要求要从小到大然后晃动几下,首先想到的就是阻尼运动,但是阻尼方程过于复杂,所以打算用sin函数改出一个来。。。首先看一下sin函数图像y=sin(x):首先我们需要让函数有一个衰减的过程,所以我们再除以x,像这样 y=sin(x)/x:然后因为我们的动画需要从小到大,即从0-1,所以我们把原创 2018-02-01 00:00:16 · 3415 阅读 · 0 评论 -
unity中实现一个光照越强透明度越高的shader
可能描述的不清楚,先看下效果:就是这样,被灯光照亮的部分,会变透明,而且越亮透明度越高。这里主要就是通过计算当先位置的法线在灯光方向上的投影大小,投影越大则亮度越高,因为透明度为0-1,所这里我们把(1-亮度)作为透明度即可。完整的shader代码:Shader "Custom/NewSurfaceShader" { Properties{ _原创 2018-02-02 15:23:53 · 831 阅读 · 0 评论 -
Unity中实现类似纪念碑谷中地面的雾化效果
看一下纪念碑谷中的这个效果:想要实现一个这种地面的雾化效果,在网上找了很久,也没找到满意的解决方案,最后只能自己做一个了。首先想到的就是shader,思路就是从y坐标=0开始往下的位置都使用雾的颜色,中间过度部分用原颜色和雾的颜色做一个插值即可。但是因为是整个游戏的效果,肯定不能只作用在某一个模型上,所以只能使用后期特效,后期特效的话就会有一个问题,如何获取像素点的世界坐标,于是我原创 2018-02-02 14:43:56 · 5351 阅读 · 1 评论 -
unity中的特效管理器(特效缓存池)
游戏中普遍都有大量的特效,为了便于管理,写了一个简单的特效管理器。此管理器用到了一个配置表管理器,之前的文章中有介绍,传送门我们的配置文件的内容应该是这样:这里是excel的样子,如果使用我前面提供的配置表管理器还需要把它转成xml格式。此管理器借鉴了缓存池的设计思路,使用一个字典用来存放所有特效对象。在初始化此管理器时,会根据配置表中配置的同时存在数量来创建特效,原创 2018-02-02 10:57:04 · 4309 阅读 · 1 评论