unity3d中mvvm框架的实践 简介 在wpf中,引入的一个比较新颖概念非xaml莫属,而xaml的,大概就是mvvm框架的最好的实践。虽然网络时代的兴起,wpf不会那么火热,了解的人不多。但这里面一些思想,如数据绑定,弱化界面层的逻辑等,被做程序的一群人发扬光大。用在了不同语言及环境下。在不久前还一直都只使用puremvc框架,当然很好的解决了不同程序模块的解耦合的问题,但一真有一块心病,那就是view层在厚。...
C#模板生成 简要说明 创建代码有多种方式。最简单的,就按编辑器最初始的方法生成。稍微会点的就可以自己修改编辑器的模板。再深入一点的就可以自己定义一系列代码模板,保存到文本文件,再读出来,然后修改一些模板信息。用unity3d程序,我倒是习惯了在这程序中创建一个script而不是在vistual studio中去新建代码。这样的话,所有的代码类型,如Interface,struct,enum都需要在创建出一
AddObjectToAsset [u3d-api] 正如果标题所示,本文的思路异常简单,就是应用这个方法,已表达官方api学习重要性.在不会这个方法的时候,想要在一个ScriptObject中嵌套一个ScriptObject,结果场景一切换,资源就不见了.原来内嵌的那个ScriptObject实际上记录在场景中.而这个方法就实际上就可以在一个Object中嵌套其他Object.下面详细说明一.在初始化时创建的资源会随场景关闭而丢失p
生成中间代码实现跨工程资源加载 unity3d中的开发,最大的特点就是预制体,不是直接的图片,模型等资源.在一个工程中当然有利于开发,但有个需求这样是不太好的,那就是主逻辑不变,动态加载不同的资源出来.设计的思路也没什么要说的,非常简单,就是利用反射将你所写的Monobehaiver和ScriptObject类及内部用到的可序列化的字段与相关的类全部转换为只有可序列化的字段,删除方法及属性,删除接口等用不到的信息.然后导入到
BridgeUI-第二代综合性UGUI框架 BridgeUI-第二代综合性UGUI框架BridgeUI-第二代综合性UGUI框架接口任意脚本中打开一个面板在面板中打开面板为子面板强行关闭对应名称的面板强行隐藏对应的面板注册界面打开事件注册界面关闭事件注册界面信息回调定向发送信息图形化利用线来表示界面与界面之间的关系将节点信息记录独立于Prefab快速展开编辑和快速保存UML设计Facade及生成器界面类型信息模
深入理解unity5.6版本ui布局功能 从表面上看,unity5.6的和unity5.3的布局功能没有太大的差别,其中VerticalLayoutGroup,只比unity5.3多两个参数即否控制子对象的宽度或高度.但在使用的时候可以实现的效果就远远超过默认控制宽度和高度的布局器强大多了.对于多层嵌套的布局来说,实际上难度还是有比较大的,毕竟一个组件多两个参数,多嵌套几层就复杂了不少.不过越复杂的东西往往灵活性也就越大.一.浮动
讯飞文字转语音_unity3D 前言 讯飞语音是国内的智能语音前沿,有语音合成及语音识别还有一些其他高级的语音服务。前面已经写过一篇unity中使用在线语音的方式,不过由于是国外的网站不稳定,速度相对也慢,目前貌似已经不能用了。所以看好讯飞在线免费使用的优点,同时也看靠c++的而不是直接通过http请求的方式,在这里简要分享下在unity3d开发环境下,基于windows平台的在线语音生成。值得说明的讯飞的语音选择
模型淡出Shader实现 一些特殊的动画,在unity中并不能使用。最近需要实现一种线条慢慢生长的过程,从无到有,还要掉头。这种动画貌似可以使用一些插件来使用,但想想更好的方案就是利用Shader来实现,虽然学习Shader很长时间了,但具体用它来做功能的项目还是比较少。这也算是个相对简单的Shader,其中用到的算法也比较初级,但基本功能也初步实现了,故mark一下。方案1.以空物体做标记记录关键点 如
状态加载模块 前言 而达到项目优化的效果,在3维场景中漫游的时候,同大多的的2维场景游戏一样,需要在不同的区域需要加载出不同的资源对象。然而2维场景游戏和伪3D的类型的游戏由于视角有限及资源相对较小,加载资源基本都是计算视角区域,进行计算并并加载相关的资源。在3维场景中大多数还是整体加载为主以细节资源加载为辅助,一是能在进入场景后就可眼观全局,二是在进入一个小区域或房间后可以看到具体的资源。为
U3d跨场景开发解决方案 摘要 需要说明的是,本人也不确定跨场景开发这个词是会出现怎样的歧义。简单的说,就是多人合作的升级,不再是多个人在一个Project目录下各负责某个模块,而是一部分人负责某一个工程。将工程分为不同的类型,以便于程序的扩展和维护。有些时候调整其中一个工程就可以实现变化,这样的划分的意义将凸显。设想有如下的场景:你有一个逻辑完善的程序框架,其中部分资源经常需要调整,或则是这部分资源调整就可以
深度序列化的一种解决方案 说明:在unity3d中自己定义的scriptobject中使用了一个可以序列化的类,希望可以在界面上显示,但这个类的一个树型结构,其中包含了同类型的列表。这种情况下,利用unity自己的序列化方式虽然能够用,但官方强烈不让这样用,还直接报红:Serialization depth limit exceeded at '‘. There may be an object composition c
列表生成器 在程序开发过程中难免要涉及到列表的生成,而程序总是相似的。虽然列表中每一条及列表的处理内容不相同,然创建列表,显示列表这个过程是可以抽象出来的。也就是说可以在其他业务逻辑的实现的基础上,将这个共用的列表生成器嵌入到程序中,以防止每次都去重复创建对象设置对象坐标这个繁琐的事情。前一段时间写过一个列表生成脚本,挺实用,应该初始化的时候指定预制体和父级,数据来的时候调用创建就可以实现一个列表显示。一
一种局部ui界面切换解决方案 前段时间开发的动态加载ui界面的功能,在程序面版不太多的情况下还是减少了不少工作量,但由于开发的程序日渐复杂,才终于理解了那些可视化编程插件的意义。毕竟程序再怎么精练也有太多的重复功能,少量的变化就造成了开发过程中无止境的劳动。为此目前也在研究相关的程序化开发程序的插件功能,这两天遇到的面板开发数量已经达到RunTimeUIPanel-ugui这个模块工作的极限 ---- ---- 面板分解粒
unity启动高级.net功能模块 重要说明:首先,目前的unity3d只支持.net3.5的功能,最新的测试版貌似可以使用.net的高级功能,但也还不能发布使用。为此这里有一个可以实现类似功能的方案--利用unity3d,进程启动另一个微软的中间软件,在unity3d中向其传入参数,并利用反射将开发的dll加载到其中,最后将得到的结果返回到unity3d。这样的过程有点复杂,但我想如果封装的好,应该还是比较容易使用的。在说一个
利用UnityEditor实现自己的代码生成器 在写了不少代码之后,才发现以前写的很多代码都是重复性的,虽然这样的重复劳动让程序员形成了自己的代码风格,但一直这样下去并不是十分明智的方式。-----------------------------------------------------写在前面本文将利用unity的编辑器扩展功能,结合开源的Rotorz列表生成器,实现一个简单但有意义的代码模板生成。其中生成时使用的模板来自于本人
利用shader绘制矩形网格 实现说明:本文将使用geometry shader实现一类网格体的网格显示。mesh的组成单元为三角片,但实际应用中有时需要实现不显示网格的第三边的矩形网格,这时可以用c#来修改贴图实现这种效果,也可以直接对GPU进行编程,让其绘制指定的区域。本文编写的shader源码是基于AssetStore的免费shader:UCLA Wireframe Shader制作而来,感谢原作者效果预览:
c#代码实现轴向镂空效果 适用说明:本文仅适用于模型比较简单,网格沿轴向分布的模型,如正方体,长方体等。效果说明:模型的贴图是完整的,但需要动态的按网格数来创建贴图实现指定效果,如下:(镂空前)(镂空后)实现步骤:一、获取网格数据[System.Serializable]public struct MeshStruct { public int[] triangles;
u3d网格编程-绘制多面片长方体 写在前面:unity3d中可以使用Mesh类,实现动态生成网格体,指定uv、法线等操作。本文将绘制一个指定长宽高的长方体,并在其内部划分指定距离的网格,多余的部分的顶底和uv也做了适当的使用。适合正在学习网格编程的同僚参考,下面是实现后的效果图:\本文目录按当时学习并制作的过程来划分如下:一、用脚本实现一个简单的cube绘制二、为cube指定法线和uv等三、用脚本绘