- 博客(73)
- 资源 (6)
- 收藏
- 关注
原创 开源自己开发的一款宠物小精灵游戏
链接https://github.com/IceLanguage/Pokemon_Unity3D_Entitas游戏说明介绍PokemonBattle是一款完全由我个人独立开发,基于Unity+C#+Entitas-CSharp的安卓手机游戏,玩家可以操控训练家进入草地,草地中会冒出精灵与玩家作战,玩家可以在战斗中选择使用道具,捕捉精灵,切换精灵,选择精灵技能进行攻击,或是...
2018-07-29 22:58:08 6770 1
原创 c++ stl源码-我理解的空间配置器
背景软件开发过程中,我们总是频繁的使用一些小块的内存,进行类型的定义,对象内存的动态申请或释放。这个过程很容易产生内存碎片。为此stl设计时采用了享元模式进行内存管理,通过开辟一小块让空间配置器进行管理,从而解决这些问题。stl空间配置器的实现策略内存空间大小为128字节,用户申请空间如果小于128,就使用空间配置器管理。多于128,就使用malloc,free进行处理空间...
2018-04-25 19:24:07 426
原创 ECS架构 Entitas-CSharp学习之路(三)
第三个教程 -实现一个多反应系统教程地址https://github.com/sschmid/Entitas-CSharp/wiki/MultiReactiveSystem-Tutorial配置打开之前的Entitas编辑器,就是之前用来generate的那个。 在那个Jenny->Context 配置Game, Input, Ui,然后generate 加入教程...
2018-04-10 20:46:05 1351
原创 ECS架构 Entitas-CSharp学习之路(一)
断断续续2个月完成了自己的游戏demo,却有种删除整个项目的冲突,架构太混乱,已经完全不想加东西,加一个功能就会因为发现自己之前留了太多屎,到后面不得不为之前的屎埋坑,必须做出改变。我需要学习一下其他人的代码和架构,查找了一下github几个star比较高的unity框架,发现了它——Entitas,最近知乎unity讨论比较热乎的ECS架构。 那么就玩玩吧,反正我一个学生党很闲很作,而且多学学...
2018-04-10 20:45:16 3592 1
原创 ECS架构 Entitas-CSharp学习之路(二)
接下来第二篇教程。主要是教我们如何在Entitas下使用组件表示游戏状态,以及其他系统如何响应用户输入执行相应逻辑。官方教程https://github.com/sschmid/Entitas-CSharp/wiki/Unity-Tutorial—Simple-Entity-View-and-Movement 完全按教程做就能将demo跑起来,注意要将camera的Projectio...
2018-04-10 20:44:05 1201
翻译 UnityAction和System.Action引发的思考
今天突然发现UnityAction,这是什么,怎么和Action有着类似的功能?可是如果功能如果真的一致,那unity官方提供这个不是多此一举吗。 在google的帮助下我得到了答案。(百度真是垃圾)UnityAction和System.Action的区别1.首先,unity内置的.AddListener只能注册UnityAction来添加非持久监听器2.如果希望在inspector...
2018-04-05 01:07:59 10213 4
原创 The name `AssetDatabase' does not exist in the current context
The name `AssetDatabase’ does not exist in the current context背景我尝试build游戏,报出了这个错误原理因为AssetDatabase是UnityEditor的一个功能,所以它不能在构建中导入。结论不能在游戏中使用AssetDatabase...
2018-03-03 23:15:51 6168 3
原创 unity编辑器扩展篇-中文字段显示
编辑器扩展篇-中文字段显示因为unity原生编辑器或多或少不满足业务需求或使用者的审美,我常常需要对编辑器进行扩展。这不,我很不满unity原生字段在inspect面板的显示,希望字段能以中文方式显示字段,unity编辑器扩展这一强大的功能给了我任性的需求提供了解决之道。只有使用过unity的都清楚你在类中定义怎样的字段属性,inspect面板上显示的字段属性就是你用英文描述的字段。可...
2018-02-10 01:42:32 2627
原创 unity中三种数据存储方式ScriptableObject,Json,Xml和Dictionary的序列化
unity中三种数据存储方式ScriptableObject,Json,Xmlunity中三种数据存储方式ScriptableObjectJsonXml准备ScriptableObject简介编写序列化类读写Json简介序列化类读写LitJsonNewtonsoftJsonXml序列化类读写准备我以Dictionary类型作为案
2018-02-07 00:55:55 5710 2
转载 unity篇-官方序列化接口 ISerializationCallbackReceiver
unity篇-官方序列化接口 ISerializationCallbackReceiver标签(空格分隔): unityunity篇-官方序列化接口 ISerializationCallbackReceiver简介官方提供的解决方案Dictionary的序列化的泛型解决方案简介在unity中,序列化一直是个很头疼的问题,尽管官方支持了许多类型,但一些自定
2018-02-05 20:51:35 6803 3
原创 C#篇-unity和序列化和反序列
C#篇-unity和序列化和反序列标签(空格分隔): C# C篇-unity和序列化和反序列简介C完成序列化和反序列化如何控制类型可序列化序列化反序列化中上下文unity中的序列化和反序列化unity中序列化的注意事项自定义序列化序列化和反序列内部过程简介所谓序列化就是将对象转换为字节流,反序列化则是字节流转换回对象C#完成序列化和反序
2018-02-02 23:37:01 2050
原创 C#篇-值类型和引用类型
C#篇-学习笔记-值类型和引用类型C篇-学习笔记-值类型和引用类型区别类型的内存分配值类型特征优先使用值类型的情景装箱拆箱区别值类型和引用类型的最大区别:值类型变量直接包含值 一个值类型变量赋给另一个值类型变量时,复制其包含的值,引用类型的赋值则是复制对象的引用,不复制对象本身值类型不能派生其他类型,值类型实例一般分配在线程栈上,相比引用类型,值类型使
2018-02-01 17:50:22 405
转载 shader篇-动画
shader篇-动画shader篇-动画纹理动画序列帧动画简介属性配置状态配置顶点着色器和输入输出结构体片元着色器fallback配置序列帧动画图像滚动的背景简介属性配置其他配置和顶点着色器片元着色器fallback顶点动画流动河流属性配置状态配置和输入输出结构体顶点着色器设置顶点动画片元着色器和fallback广告牌技术属
2018-01-17 20:13:39 918
转载 shader篇-程序纹理
shader篇-程序纹理shader篇-程序纹理简介脚本简介程序纹理指的是那些由计算机生成的图像。使用程序纹理的好处在于能创建个性化的图案或真实的自然元素,并可以使用各种参数控制纹理的外观,从而得到丰富的动画和视觉效果。脚本脚本创建using UnityEngine;using System.Collections;using Syste
2018-01-17 14:38:20 1202
转载 shader篇-渲染纹理
shader篇-渲染纹理shader篇-渲染纹理背景镜子效果玻璃效果渲染纹理对比GrabPass背景Unity为渲染目标纹理定义了一种专门的纹理类型————渲染纹理。 渲染纹理有2种方式: 1.Project目录下创建渲染纹理,把摄像机渲染目标设置成该渲染纹理。这样摄像头的渲染结果就会实时更新到渲染纹理中,而不会显示在屏幕上。 2.在屏幕后处理时使用
2018-01-17 00:44:29 674
转载 shader篇-立方体纹理
shader篇-立方体纹理shader篇-立方体纹理简介天空盒反射折射菲涅尔反射简介立方体纹理是环境映射的一种实现方式。 立方体纹理包含6张图像,对应立方体6个面。 优点:实现快速简单,效果好 缺点:经常需要重新生成立方体纹理。仅可以反射环境。天空盒天空盒是立方体纹理的一种应用,游戏里常用它模拟背景。让整个场景包裹在一个立方体内。 Uni
2018-01-16 23:12:45 1025
转载 shader篇-阴影
shader篇-阴影标签(空格分隔): shadershader篇-阴影简介投射阴影实现接受阴影Unity统一管理光照衰减和阴影透明度物体的阴影简介阴影的实现需要2个过程: 一、接受阴影的物体,需要在shader中采样阴影映射纹理,并把采样后结果与光照结果相乘获得阴影效果。 二、一个物体如果想投射阴影,就需要将该物体加入光照映射纹理的计算中,以便
2018-01-16 21:01:25 3530
转载 shader篇-处理复杂光照
shader篇-处理复杂光照标签(空格分隔): shadershader篇-处理复杂光照unity光源类型介绍前向渲染中处理不同光源unity光源类型介绍1.平行光:几何属性只有方向,光照不会衰减 2.点光源:光源中心光照最强,球边界光照最弱,为0 3.聚光灯:由一个特定位置出发,有着锥形光照区域的光源。顶点光照最强,锥形变边界光照最弱,为0
2018-01-16 19:31:07 1338
原创 shader篇-透明效果
shader篇-透明效果标签(空格分隔): shadershader篇-透明效果透明效果实现方法简介渲染顺序的重要性Unity shader的渲染顺序透明度测试透明度混合开启深度写入的半透明效果双面渲染透明效果实现方法简介Unity中使用2种方法实现透明效果:一是透明度测试,二是透明度混合。 透明度测试:不需要关闭深度写入,透明度不达标就去掉,
2018-01-16 01:31:09 5324
转载 shader篇-纹理-遮罩纹理
shader篇-纹理-遮罩纹理shader篇-纹理-遮罩纹理简介使用流程和原理代码实现简介==什么是遮罩纹理?它保护了某些区域,使他们免于某些修改。 比如说高光,你希望模型不同区域有不同的高光强度和高光指数,从而达成细腻的效果,就可以用遮罩纹理控制光照。 比如制作地形需要混混多张图片,遮罩纹理可以控制如何混合这些纹理。使用流程和原理遮罩纹
2018-01-15 15:33:00 634
转载 shader篇-纹理-渐变纹理
shader篇-纹理-渐变纹理shader篇-纹理-渐变纹理简介代码实现注意最终效果简介==纹理的一开始的作用是用以定义物体的颜色,但后面发现纹理可以存储任何表面属性。比如说,使用渐变纹理来控制漫反射光照的结构。在很多卡通风格的渲染中都使用了该技术。代码实现配置Properties { _Color ("Color
2018-01-14 23:55:49 2800
原创 算法篇-用栈来求解汉诺塔问题
算法篇-用栈来求解汉诺塔问题阅读了java版的《程序员代码面试指南 IT名企算法与数据结构题目最优解》后,用c++以自己的想法完成了这道题 完整题目在汉诺塔规则的基础上,限制不能从最左的塔移动到最右的塔上,必须经过中间的塔,移动的跨度只能是一个塔。当塔有N层的时候,打印最优移动过程和最优移动步数。 看到原题我实际上并不能理解这道题,百度后才理解 相传在古印度圣庙中,有一种被称
2018-01-12 20:19:32 1138
原创 算法篇-union-find并查集
这个算法主要用来判断2点是否连通 在博客记录下来,方便以后能用public class WeightedQuickUnionUF { private int[] parent; // parent[i] = parent of i private int[] size; // size[i] = number of sites in subtree rooted
2018-01-09 13:50:39 355
转载 shader篇-纹理-凹凸映射
shader篇-纹理-凹凸映射shader篇-纹理-凹凸映射简介高度纹理法线纹理优缺点比较切线空间下进行计算在世界空间下进行计算简介纹理的一种常见运动是凹凸映射,使用一种纹理改变模型表面的法线,这种方法并不会真的改变模型的顶点位置,只是让模型看起来凹凸不平。有2种主要的方法可以用来进行凹凸映射: 一种方法是使用一张高度纹理来模拟表面位移,然后得到
2018-01-07 11:26:32 1648
原创 shader篇-单张纹理
shader篇-单张纹理shader篇-单张纹理简单纹理实现纹理属性说明简单纹理实现Shader "Test Shader/SingleTexture"{ Properties { _Color ("Color Tint", Color) = (1, 1, 1, 1) _MainTex ("Main Te
2018-01-06 23:13:56 327
原创 shader篇-高光反射模型
这里的高光反射模型,并不是现实意义上的高光反射,而是只是用来计算物理上那些沿着完全镜面反射方向被反射的光线,让物体看起来有光泽,例如金属材质高光反射计算公式如下$$C_{diffuse}=(C_{light}*M_{diffuse})*max(0,\vec{v}*\vec{r})^{M_{gloss}}$$v是视角方向,r是反射方向$$M_{gloss}$$是高光反射系数反射方向可用表面法线n和光照方向l计
2018-01-03 22:50:27 1706
原创 shader篇-漫反射
渲染包含两大部分:像素可见性和光照计算。今天就是介绍如何利用shader仿真现实世界中的漫反射。漫反射计算公式如下$$C_{diffuse}=(C_{light}*M_{diffuse})*max(0,\vec{n}*\vec{l})$$计算漫反射需要四个参数,入射光颜色,强度$$C_{light}$$,材质反射系数$$M_{diffuse}$$,表面法线n和光源方向l
2018-01-03 00:36:46 821
转载 unity shader相关工具教程
在Unity3D中使用Visual Studio调试shaderhttp://blog.csdn.net/cbbbc/article/details/51131731
2017-12-31 20:56:59 393
原创 Unity3d基于订阅者模式实现事件机制_解决装箱拆箱问题和注册的监听事件单一问题
原代码参考自 http://www.unity.5helpyou.com/3695.html#more-3695 原代码作者提供了C#的基于观察者模式的事件机制,但还有许多问题,一是数据传输时装箱拆箱引起性能损耗,二是注册事件代码有错误,只能注册一个事件,没有充分使用委托来注册多个事件。 针对以上问题,我做出了修改。 原代码 订阅者模式实现using System;using Syste
2017-12-30 22:19:34 548
原创 C#篇-unity存储类成员数据
代码很简单,就是利用FileStream数据存储到.dat文件先是类数据结构和单例模式模板类using System.Collections;using System.Collections.Generic;using UnityEngine;/// <summary>/// 为单例模式设计的模板类/// </summary>/// <typeparam name="T"></typep
2017-12-25 10:06:44 1063
转载 unity编辑器扩展篇-视图拓展基础
为了更方便的编辑,有时候需要在拓展视图,在编辑游戏时在看到一些东西using UnityEditor;using UnityEngine;//自定义Tset脚本[CustomEditor(typeof(Test))] //请继承Editorpublic class MyEditor : Editor { void OnSceneGUI() { //得到t
2017-12-23 22:00:26 382
转载 unity编辑器扩展篇-将图片数字和英文转换成字体文件
using UnityEngine;using UnityEditor;using System.IO;public class CustomFont : MonoBehaviour{ //本方法是通过裁切的sprite导出字体文件,裁切使用的是unity自带的sprite editor,方便操作。 //另外,裁切之后,每个sprite的名字的最后一个字符对应了ascii码的编
2017-12-21 19:32:53 441
原创 unity报错篇-Unsupported texture format - needs to be ARGB32。。。。
报错如上图 解决办法 设置成RGB32就可以 如下
2017-12-12 20:29:45 8812 1
转载 unity编辑器扩展篇-图集拆分
要写一个属于自己的游戏demo,需要大量的美术资源和音频资源等等,但网上找到的美术资源大部分都是NGUI的图集,我希望能把图集拆开,变成一个个小的图集。 代码如下//导出单个精灵 [MenuItem("Assets/MyEditor/SingleSpritesExport &x")] static void SingleSpritesExport() {
2017-12-12 20:08:01 1286
原创 unity编辑器扩展篇-快速设置sprite
当导入sprite时,图片总不是我们想要的格式,所以我们每次都需要对Texture的属性进行修改,图片数量多的话的就会特别累,所以写个脚本简化操作岂不是美滋滋 代码很简单,利用TextureImporter修改Texture各项属性,直接上代码,不理解去看我的另一篇博客 http://blog.csdn.net/qq_34244317/article/details/76718284编辑器扩展基
2017-12-12 00:54:22 2980 1
原创 Unity动画播放结束事件
animator.SetBool("IsAttack", true);这是我动画播放的触发条件 我播放了一个动画,希望动画播放完成后就执行一个事件 这种事件有2种添加方法,一种就是直接修改动画,在动画中添加事件 另一种以代码判断该动画播放结束 我个人更喜欢用代码解决这是用来判断动画播放结束的代码AnimatorStateInfo stateinfo = animator.GetCurrent
2017-12-08 22:46:13 17617
原创 Unity双指触控缩放视野
Input.touchCount为屏幕触摸的数量(2个手指) 我们通过双指移动完成对视野缩放,所以屏幕上需要至少2个手指并且手指在移动if ((Input.touchCount ==2) && (Input.GetTouch(0).phase == TouchPhase.Moved || Input.GetTouch(1).phase == TouchPhase.Moved))
2017-11-30 01:22:05 10376 2
转载 C#单例模式模板类
public class UnitySingleton<T> : MonoBehaviour where T : Component { private static T _instance; public static T Instance { get { if (_instance == null) {
2017-11-29 22:52:21 2534
转载 C# A*寻路算法代码
using System;using System.Collections.Generic;public struct _mapPoint{ public int x; public int y;}class FindWay{ class Point { public Point() { } public Point(_map
2017-11-29 17:53:18 1766 2
C#实现的基于观察者模式的事件机制
2017-12-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人