
Unity
文章平均质量分 76
BennyChao
目前从事VR开发工作
展开
-
【ZProRx 重装上阵】前序 家族
ZProRx 框架简介面向属性的编程框架,以属性为基础,构建属性网,同时结合反应式编程、链式编程。特点:基于UniRx反应式的属性框架。 基于面向切片的编程思想,通过修饰(Attribute)配合属性,提供附加信息定义,比如:实现属性间的关联 支持与View(Unity)的绑定。用于表现层的分离(MVC框架等)。UniRx的ReactiveProperty也有类似的功能。 但ZPr...原创 2020-03-08 22:14:04 · 579 阅读 · 0 评论 -
【ZProRx 重装上阵】 第四回 网络
Net 网络ZProRx 包括Socket 和Http的封装支持。Socket使用Topic进行消息的发送与订阅,分为客户端与Server端两种情况。 数据包使用的共通的NetPackage结构,其模板使用可以用于扩展支持自定义的数据。 public class NetPackage<T, TErrorEnum> // where TErrorEnum : Sy...原创 2020-02-27 23:00:19 · 370 阅读 · 0 评论 -
【ZProRx 重装上阵】 第三回 绑定
表示层ZProRx 架构也是类似MVC的分层,这一节主要介绍如何实现表示层与数据层的绑定。目前只支持与Untiy表示层(UGUI/GameObject)的绑定。绑定 Unity Bind把属性与Unity元素进行Bind 这部分提供了如何与UI能进行自动化的绑定,动态更新等机制,同时对一些常用框架的支持,比如上接UGUI、向下与UniRX、ZECS等架构对接。同时也支持创建动态UI...原创 2020-02-26 22:36:36 · 358 阅读 · 0 评论 -
【ZProRx 重装上阵】 第二回 矩阵
上一节主要介绍ZProperty的单体结构,这一节主要说明属性间的关联。Link(属性)关系分类可以定义属性与属性间的关联,方便基于属性框架的开发。主要的关联关系包括:聚合、关联、视图接口与聚合即通过一个属性引用另一个类的对象。 ZP内容类支持 接口(interface)做为值(Value),如下所示 多用于引用一个对象,即可以理解为对象间的关联。(UML中的聚合或者组合的关系)...原创 2020-02-26 22:06:27 · 278 阅读 · 0 评论 -
【ZProRx 重装上阵】 第一回 重构
前序本框架在原ZP框架基础上重构而来,基本思路属性即数据,其核心还是面向数据。重构过程中陆续把相关代码开源详细参考:https://github.com/bennychao/ZProRx.LibZProRx框架简介面向属性的编程框架,以属性为基础,构建属性网,同时结合反应式编程、链式编程。特点:-基于UniRx反应式的属性框架。-基于面向切片的编程...原创 2020-02-26 22:01:00 · 494 阅读 · 0 评论 -
UniRX/Reactive 反应式编程 三元素
主要介绍UniRX主要的元素原创 2019-10-26 08:17:52 · 424 阅读 · 0 评论 -
ZProperty框架——视图与关联
面向数据开发数据驱动编程的核心:数据驱动编程的核心出发点是相对于程序逻辑,人类更擅长于处理数据。数据比程序逻辑更容易驾驭,所以我们应该尽可能的将设计的复杂度从程序代码转移至数据。数据驱动是一种思想,数据驱动型编程是一种编程范式。基于数据驱动的编程,基于事件的编程,以及近几年业界关注的响应式编程, 本质其实都是观察者模型。数据驱动定义了data和acton之间的关系,传统的思维方式是从act...原创 2018-12-27 17:24:23 · 400 阅读 · 0 评论 -
UniRX FromEvent的用法
我们大使用Delegate时,需要考虑其反注册操作。写代码以下几个问题,总会造成困扰。1. 反注册很爱忘记2. 有时也不好进行反注册,比如使用Lambda给一个委托赋值时。所以Unity也是考虑这个原因,才使用UnityEvent吧(这个也得自己反注册)。3. 有时不知道向谁反注册。比如,向一个局部变量的委托进行注册,如果再想反注册就得再加一个其成员变量,加重了代码的偶合度。这里介...原创 2018-12-24 11:14:32 · 1201 阅读 · 0 评论 -
自定义TimeLine
TimeLine其强大的地方就在于其扩展性,其中ChineCamera就是支持其扩展。默认只支持以下几个有限的功能。大部分还是需要我们自己进行扩展,才能发挥出TimeLine的潜力。本文以一个简单的Rotate 的Playalbe 为例:PlayableAsset代码如下:using System.Collections;using System.Collections.Gen...原创 2019-01-02 15:21:44 · 837 阅读 · 0 评论 -
LightMap与Light Probe应用
1. LightMap支持多场景,这样可以解决,LightMap单张最大4096分辨率的限制。但如果这时使用Probe会有问题,2. 如果动态物体到了没有Probe区域,也会显示最近的Probe的光照,无论多远。如下图所示。再移动物体,其光照不变。所以要保证动态物体的运动范围内都有Probe。 3. Probe没办法产生阴影如上图只有黄色实时光的阴影,红色Bak...原创 2019-01-03 14:43:57 · 832 阅读 · 0 评论 -
Dotween Pro简单评测
Pro版本其实就是使用可视化配置,基本功能与Free版基本一致。其有两个核心组件:Do Tween Animation/Do Tween Path。Animation组件支持多个同时控制同一对象,来实现复杂的组合动画。通过ID进行标识。如上,主要方法,可以通过脚本进行调用。其中比较常用的如下:DoPlay:会触发当前对象下所有的Animation组件开始动画,如第一图所示,...原创 2019-01-03 14:59:13 · 4621 阅读 · 0 评论 -
.NetCore + Unity = 未来
Unity服务器端代码的选择问题,有很多。本人比较喜欢用Golang。但是从写了ZP框架之后,写BackEnd时,发现很多情况要把Client的C#代码使用Go翻译一遍,很是浪费时间。如果C#代码直接复用到BackEnd是最高效的了。在.NetCore之前其实已经有很多方案。mono.Net就是.Net的开源实现,它就是为了支持不同平台而诞生的。但它由不是MS的亲儿子,性能常常被诟病。(Uni...原创 2019-01-21 15:21:07 · 8000 阅读 · 0 评论 -
Unity后端Server实现方案
引言在Unity与NetCore使用方案中https://blog.youkuaiyun.com/FeiBin2013/article/details/86574687讨论过如何在NetCore中使用UnityEngine 库的问题,本文进行更加详细的调查。先还是尝试使用注入的方式替换部分Native底层Unity注入GameObject实践本文以CreatePrimitive方法为例...原创 2019-03-16 15:14:02 · 5109 阅读 · 0 评论 -
Unity中使用Mqtt协议进行通信
常见游戏后端BackEnd支持协议越来越多,比如HTTP、TCP、UDP、MQTT等。各协议各有优点。mqant框架可以使用Module对Beego进行封装。注意:使用_ "cpvrtapp/routers”进行初始化,不然是不能行的,没有调用InitMQTTNethttps://github.com/landbroken/MQTTLearning做为最基础的协议支持吧...原创 2019-02-15 08:45:23 · 7110 阅读 · 5 评论 -
NetCore下ZP的环境配置
程序集:LitJson UniRx UnityEngineNuGet: MQTTnet MySql.Data如果是Net.Standard Dll还需要加入 <PackageReference Include="MySql.Data" Version="8.0.16" /> <PackageReference Include="MQTTnet" Vers...原创 2019-02-26 21:54:23 · 515 阅读 · 0 评论 -
Unity LWRP 学习之 RenderFeature
RenderFeature是一种扩展LWRP的方法。该方法还是实验版。实现管道的参数的定制,其好处就是不需要修改物体的Shader,比如要实现一个如下图的显示隐藏背后的轮廓的需求。通常是需要修改对应的Shader的,使用两个Pass进行绘制,一个画正面,一个画轮廓,正面使用正常的Pass就可以,轮廓需要关闭Depth Test设置。如果有RenderFeature,或者SRP,那就不需...原创 2019-06-13 13:15:34 · 4509 阅读 · 0 评论 -
Unity LWRP学习之Command Buffer 与 Shader Graph SceneColor
CommandBuffer的相关内容参考如下,其用于扩展Build-in的管线,(LWRP中是否好用呢?)https://docs.unity3d.com/Manual/GraphicsCommandBuffers.html总结几点:public void OnWillRenderObject() 中创建CommandBufferbuf.Blit (BuiltinRender...原创 2019-06-13 14:36:34 · 3695 阅读 · 0 评论 -
Unity 集成原生IOS IAP功能2——异常处理与调试
当IAP的功能实现了基本流程,还需要大部分的时间来处理异常操作。连续多次点击购买处理一:可以判断当前PaymentQueue中是否已经有了购买请求(是只当前未处理完成的) __block BOOL bFind = NO; [[[SKPaymentQueue defaultQueue] transactions] enumerateObjectsWithO...原创 2018-10-30 15:49:32 · 469 阅读 · 0 评论 -
Unity 集成原生IOS IAP功能
IAP配置过程第一步:需要配置银行、税务等信息。第二步:在App Store Connect上配置App的购买项内容。第三步:代码第四步:Test,需要使用沙盒测试,App Store Connect上的用户与账号中添加。中文参考https://www.jianshu.com/p/7ae9654b85eehttp://nightfade.github.io/2015/0...原创 2018-10-28 15:15:32 · 815 阅读 · 4 评论 -
Unity 可视化脚本 Bolt插件 使用评测
之前使用过Player Maker,就一直对类似的可以化脚本插件不太感冒,感觉很低级。最近看了Unity Asset Score排名,无意之中看到了Bolt还是第一名。(现在回想第一次听到它应该是在Unity做Shader Graph的直播上)。排名还是挺高的,好奇之下就下来玩玩,之后就不一发不可以收拾。整体特点:1. 以Event驱动,分为Flow和Status两大逻辑控制单元,可以分别绑定对相...原创 2018-04-24 14:16:30 · 16353 阅读 · 8 评论 -
最小透视矩阵的求法
遇到很多时候,需要把透视矩阵最小化,以达到性能最优。比如要求Camera只能看到一个洞口里的内容这样其它的区域是不需要进行渲染的。这里自己写了一个求最小透视矩阵的方法。 第一步是先求出Camera到Box中心的向量vecCB,定义从Box中心到四个顶点的向量,再求出其各自到vecCB的投影向量,晕,也就是Box四个顶点到在向量上的投影点。可以通过以下方法获取到。原创 2018-04-24 16:02:27 · 516 阅读 · 0 评论 -
特征向量的几何意义
摘自《线性代数的几何意义》我们知道,矩阵乘法对应了一个变换,是把任意一个向量变成另一个方向或长度都大多不同的新向量。在这个变换的过程中,原向量主要发生旋转、伸缩的变化。如果矩阵对某一个向量或某些向量只发生伸缩变换,不对这些向量产生旋转的效果,那么这些向量就称为这个矩阵的特征向量,伸缩的比例就是特征值。实际上,上述的一段话既讲了矩阵变换特征值及特征向量的几何意义(图形变换)也讲了其物理含义。转载 2017-06-11 11:23:45 · 519 阅读 · 0 评论 -
EventSystem应用于3D GameObject,实现拖拽效果
EventSystem大家平时主要是用来处理UGUI的输入,但其实也可以使用在一般的3D对象上,Unity API对这个介绍的很少。在网上找到了一篇介绍不错的文章。https://www.cnblogs.com/weiqiangwaideshijie/p/6859867.html以下是我的一些分享:除了需要依赖UI相同的EventSystem之后,还需要使用Physics Ra...原创 2018-05-11 08:30:38 · 725 阅读 · 0 评论 -
ZECS Unity脚本框架简介(1)—什么是ECS
前序在介绍主角ZECS之前,很有必要介绍一下ECS框架的由来。所谓的ECS模式全称就是Entity-Component-System模式。很早就听说过Unity等引擎中广泛地使用了这样的模式,但从Unity的脚本命名,Unity是就是一种ECS框架。ECS的出身由于之前一直从事PC、移动端开发,倒是熟悉MVC、RPC、SOA、SSH等各种前后端框架,对这种ECS设计模式的何时诞生以...原创 2018-04-27 22:25:31 · 1867 阅读 · 0 评论 -
ZECS Unity脚本框架简介(2)——ECS与MVC的融合
什么的框架适合Unity开发呢?对于我这种,干过后端、大数据、移动开发的大杂烩,对MVC自然很是熟悉了。前后端、移动端开发,接触到的大大小小的框架无一不是遵循MVC模式。包括Spring MVC、ThinkPHP、BeeGO、AngularJS等吧(插曲:Beego我的大爱,现在也一直在用)MVC定义MVC框架,英文:全名是Model View Controller,这里不再细述。所以首先就想到那...原创 2018-04-28 08:48:09 · 2009 阅读 · 1 评论 -
Unity Shader效果实现汇总
效果1:Edge+Bloom(边缘高光)使用菲涅尔边缘效果,配置局部Bloom,实现边缘高光效果效果2:outline+stencil+bloom(轮廓背光)思路:第一步获取边缘,使用的屏幕处理,使用Soble梯度算子,对生成的DepthNormalMap进行卷积处理。对于单个物体加高光可以使用单独Camera进行渲染物体(为了节省性能,可以使用最小透视矩阵)。第二步对以上...原创 2018-04-30 00:48:34 · 7005 阅读 · 2 评论 -
ZGrid方格容器类的简单介绍
有关IEnumerable的使用方法,其中Unity有其特别的地方,可以参考以下文章 https://blog.youkuaiyun.com/qq_30695651/article/details/79105332有关IEnumerable的其它C#语法的说明https://blog.youkuaiyun.com/chengmin1989/article/details/63255908...原创 2018-06-14 08:59:19 · 647 阅读 · 0 评论 -
程序员学习ZBrush笔记
整理知识点如下:分组1. 如何进行分组?【经验】选择组,在组间进行切换,按【组选择】可以在开启frame显示【shift+f】的情况下,按【ctrl+shift+鼠标左键】点击,这样就可以单独选择某一个组的面。【经验】分组:先使用【Ctrl+ Shift】选择一些面,然后使用 【选择组】>【可见组】进行当前选择面的分组。也可以使用【Zmodler】进行选择面的分组,其中...原创 2019-03-16 13:55:02 · 2458 阅读 · 0 评论 -
ZProperty属性封装类简介
有关属性使用的封装,包括功能,修饰、持久化、表现层绑定等。类图如下: 附加Attribute修饰属性在使用时会带一些附加信息,描述信息也有一定的层次的,包括:名称、简介、详细描述、图片介绍、链接等多种形式。即属性又由其子属性组成。属性的附加信息,可以通过Attribute类【标签】来加以定义。但属性的这些信息,每个属性不能不同的类实例都自己保存一份,那样开销很大的。所有本例中使...原创 2018-06-28 14:25:45 · 514 阅读 · 0 评论 -
关于Probuilder的简单使用评测
主要是对比一下与主流的建模工具上,Probuilder什么特点。当然只是对应3DMax中基本的网格修改器和ZBrush中的Zmolder手动拓扑笔刷。从下面的操作界面,左侧场景中的UI,可以进行网格编辑的四种类型,这个与3DMax中是相同的,分别对应体、点、线、面。选择不不同操作类型后,右侧的功能菜单会有变化,包括一些共通的东西。可以看出,Probuilder是使用插件的方式集成到Unity中的,...原创 2018-06-08 14:20:50 · 11101 阅读 · 0 评论 -
ZProperty属性封装类——融合Bolt可视化插件2
1. PropertysOfObject结点定义Object的属性列表结点,做为前文PropertyValue和PropertyChanged结点的输入。以免去手动输入PropertyID,容易出现误输入。Object的Type可以通过HeaderInspectable(即头部可配置区域)进行定义,参考以下Bolt中的定义。 [Inspectable, Serializ...原创 2018-08-09 16:18:39 · 334 阅读 · 0 评论 -
ZProperty属性封装类——融合Bolt可视化插件
本次主要针对以下几个问题进行优化。1. 常用函数方法封装,通过反射机制进行调用。Unity的Start Update等,应该也是使用反射的机制。比如OnCreate、OnLoad、OnBind OnUnbind、OnDestory等生命周期函数。有关反射调用方法参考以下https://www.cnblogs.com/coderJiebao/p/CSharp09.html这里通过反射...原创 2018-08-09 13:00:34 · 500 阅读 · 0 评论 -
ZECS Unity脚本框架简介(3)——API说明与使用
先上类图主要接口类说明:ZEntity:实体类,它不支持继承,类似于Unity的GameObject,它需要通过EntityPool进行创建以及实例化。ZComponent:组件类,用于封装实体的行为以及对外提供的功能等,它实现了IZComponent接口,用户定义新的组件只需要从其进行继承就可以。ZSystem:系统类,用于封装业务或者游戏的控制逻辑,它实现了IZSystem,可以理解为功能抽象...原创 2018-04-30 16:28:31 · 1251 阅读 · 0 评论