Unity3d
文章平均质量分 70
探求虚无
虚拟时候纪元
展开
-
制作子弹痕迹(到shareMaterial)-Unity
本文将利用Texture2D的自身的方法在Unity中实现子弹痕迹的效果一、首先在网上down两张贴图(然后将弹痕背景透明化):1、墙2、弹痕二、将贴图导入Unity并修改参数1、保存可读可写2、格式要对三、在一个面片上挂载文章后面的脚本1、如果不用for循环而用注掉的方法效果是这样的2、而我们需要的是这样原创 2016-05-17 18:25:15 · 6249 阅读 · 0 评论 -
利用shader绘制矩形网格
实现说明:本文将使用geometry shader实现一类网格体的网格显示。mesh的组成单元为三角片,但实际应用中有时需要实现不显示网格的第三边的矩形网格,这时可以用c#来修改贴图实现这种效果,也可以直接对GPU进行编程,让其绘制指定的区域。本文编写的shader源码是基于AssetStore的免费shader:UCLA Wireframe Shader制作而来,感谢原作者效果预览:原创 2017-02-14 19:39:32 · 4775 阅读 · 0 评论 -
利用UnityEditor实现自己的代码生成器
在写了不少代码之后,才发现以前写的很多代码都是重复性的,虽然这样的重复劳动让程序员形成了自己的代码风格,但一直这样下去并不是十分明智的方式。-----------------------------------------------------写在前面本文将利用unity的编辑器扩展功能,结合开源的Rotorz列表生成器,实现一个简单但有意义的代码模板生成。其中生成时使用的模板来自于本人原创 2017-04-11 19:20:40 · 8678 阅读 · 1 评论 -
一种局部ui界面切换解决方案
前段时间开发的动态加载ui界面的功能,在程序面版不太多的情况下还是减少了不少工作量,但由于开发的程序日渐复杂,才终于理解了那些可视化编程插件的意义。毕竟程序再怎么精练也有太多的重复功能,少量的变化就造成了开发过程中无止境的劳动。为此目前也在研究相关的程序化开发程序的插件功能,这两天遇到的面板开发数量已经达到RunTimeUIPanel-ugui这个模块工作的极限 ---- ---- 面板分解粒原创 2017-04-19 19:47:36 · 5421 阅读 · 0 评论 -
unity启动高级.net功能模块
重要说明:首先,目前的unity3d只支持.net3.5的功能,最新的测试版貌似可以使用.net的高级功能,但也还不能发布使用。为此这里有一个可以实现类似功能的方案--利用unity3d,进程启动另一个微软的中间软件,在unity3d中向其传入参数,并利用反射将开发的dll加载到其中,最后将得到的结果返回到unity3d。这样的过程有点复杂,但我想如果封装的好,应该还是比较容易使用的。在说一个原创 2017-04-16 17:37:09 · 1978 阅读 · 0 评论 -
列表生成器
在程序开发过程中难免要涉及到列表的生成,而程序总是相似的。虽然列表中每一条及列表的处理内容不相同,然创建列表,显示列表这个过程是可以抽象出来的。也就是说可以在其他业务逻辑的实现的基础上,将这个共用的列表生成器嵌入到程序中,以防止每次都去重复创建对象设置对象坐标这个繁琐的事情。前一段时间写过一个列表生成脚本,挺实用,应该初始化的时候指定预制体和父级,数据来的时候调用创建就可以实现一个列表显示。一原创 2017-04-27 20:32:07 · 307 阅读 · 0 评论 -
深度序列化的一种解决方案
说明:在unity3d中自己定义的scriptobject中使用了一个可以序列化的类,希望可以在界面上显示,但这个类的一个树型结构,其中包含了同类型的列表。这种情况下,利用unity自己的序列化方式虽然能够用,但官方强烈不让这样用,还直接报红:Serialization depth limit exceeded at '‘. There may be an object composition c原创 2017-06-15 20:15:08 · 4633 阅读 · 1 评论 -
U3d跨场景开发解决方案
摘要 需要说明的是,本人也不确定跨场景开发这个词是会出现怎样的歧义。简单的说,就是多人合作的升级,不再是多个人在一个Project目录下各负责某个模块,而是一部分人负责某一个工程。将工程分为不同的类型,以便于程序的扩展和维护。有些时候调整其中一个工程就可以实现变化,这样的划分的意义将凸显。设想有如下的场景:你有一个逻辑完善的程序框架,其中部分资源经常需要调整,或则是这部分资源调整就可以原创 2017-07-06 19:14:07 · 769 阅读 · 0 评论 -
状态加载模块
前言 而达到项目优化的效果,在3维场景中漫游的时候,同大多的的2维场景游戏一样,需要在不同的区域需要加载出不同的资源对象。然而2维场景游戏和伪3D的类型的游戏由于视角有限及资源相对较小,加载资源基本都是计算视角区域,进行计算并并加载相关的资源。在3维场景中大多数还是整体加载为主以细节资源加载为辅助,一是能在进入场景后就可眼观全局,二是在进入一个小区域或房间后可以看到具体的资源。为原创 2017-08-26 17:12:36 · 410 阅读 · 0 评论 -
深入理解unity5.6版本ui布局功能
从表面上看,unity5.6的和unity5.3的布局功能没有太大的差别,其中VerticalLayoutGroup,只比unity5.3多两个参数即否控制子对象的宽度或高度.但在使用的时候可以实现的效果就远远超过默认控制宽度和高度的布局器强大多了.对于多层嵌套的布局来说,实际上难度还是有比较大的,毕竟一个组件多两个参数,多嵌套几层就复杂了不少.不过越复杂的东西往往灵活性也就越大.一.浮动原创 2017-11-02 20:10:56 · 1938 阅读 · 1 评论 -
BridgeUI-第二代综合性UGUI框架
BridgeUI-第二代综合性UGUI框架BridgeUI-第二代综合性UGUI框架接口任意脚本中打开一个面板在面板中打开面板为子面板强行关闭对应名称的面板强行隐藏对应的面板注册界面打开事件注册界面关闭事件注册界面信息回调定向发送信息图形化利用线来表示界面与界面之间的关系将节点信息记录独立于Prefab快速展开编辑和快速保存UML设计Facade及生成器界面类型信息模原创 2017-11-30 18:20:49 · 1132 阅读 · 0 评论 -
生成中间代码实现跨工程资源加载
unity3d中的开发,最大的特点就是预制体,不是直接的图片,模型等资源.在一个工程中当然有利于开发,但有个需求这样是不太好的,那就是主逻辑不变,动态加载不同的资源出来.设计的思路也没什么要说的,非常简单,就是利用反射将你所写的Monobehaiver和ScriptObject类及内部用到的可序列化的字段与相关的类全部转换为只有可序列化的字段,删除方法及属性,删除接口等用不到的信息.然后导入到原创 2017-12-12 19:38:43 · 613 阅读 · 0 评论 -
AddObjectToAsset [u3d-api]
正如果标题所示,本文的思路异常简单,就是应用这个方法,已表达官方api学习重要性.在不会这个方法的时候,想要在一个ScriptObject中嵌套一个ScriptObject,结果场景一切换,资源就不见了.原来内嵌的那个ScriptObject实际上记录在场景中.而这个方法就实际上就可以在一个Object中嵌套其他Object.下面详细说明一.在初始化时创建的资源会随场景关闭而丢失p原创 2018-01-09 19:05:25 · 1177 阅读 · 0 评论 -
c#代码实现轴向镂空效果
适用说明:本文仅适用于模型比较简单,网格沿轴向分布的模型,如正方体,长方体等。效果说明:模型的贴图是完整的,但需要动态的按网格数来创建贴图实现指定效果,如下:(镂空前)(镂空后)实现步骤:一、获取网格数据[System.Serializable]public struct MeshStruct { public int[] triangles;原创 2017-02-09 17:17:50 · 831 阅读 · 0 评论 -
u3d网格编程-绘制多面片长方体
写在前面:unity3d中可以使用Mesh类,实现动态生成网格体,指定uv、法线等操作。本文将绘制一个指定长宽高的长方体,并在其内部划分指定距离的网格,多余的部分的顶底和uv也做了适当的使用。适合正在学习网格编程的同僚参考,下面是实现后的效果图:\本文目录按当时学习并制作的过程来划分如下:一、用脚本实现一个简单的cube绘制二、为cube指定法线和uv等三、用脚本绘原创 2017-02-08 18:05:39 · 2437 阅读 · 0 评论 -
多个可执行程序协同工作
背景最近的项目涉及到一个漫游场景和多个小实验室,一开始是把小实验室和漫游场景放置在一个工程下面并且通过场景切换的方式来链接跳转。考虑到网络应用的大趋势和程序的扩展性,这样做下去实在是难以维护日渐增加的小实验室场景和逻辑。实现本文将实现一个大场景打开小场景并且可以跳转回大场景和功能,这个功能建立在window平台提供的Api的基础上,涉及到程序窗口的隐藏显示,初始进程参数的传递。还有原创 2016-12-07 20:17:43 · 507 阅读 · 0 评论 -
泛型PureMVC--Unity3d
由于前期项目需要,在Unity3d开发程序中引入了PrueMVC架构,该架构对Unity3d界面和逻辑之前的解耦合起到了极大的作用。由于网上PureMVC相关的资源实在是多的不得了,而且本人是较晚的使用者,偶然用在了Unity3d,下面主要说一些和unity结合的部分以及对这个驾构的优化。为什么说要优化呢,其存在这么多年了,优化得还不够么?主要是考虑到和具体的语言和应用场合不同,做适当的修改以原创 2016-06-17 20:08:47 · 1713 阅读 · 2 评论 -
unity3d TextMesh清晰字体
直接出效果如图所示,由于unity3d中字体在3d中显示十分的渣,要想在场景中显示比较清晰的字体比较困难。好在unity插件扩展性,让过去的不可能变成 了可能 。要使用的工具如下: 1、抽取文字软件:BMFont字体制作工具 2、免费插件:bitmapFontImpoter制作的原理是将文字转换为清晰的图片,将对应的坐标记录下来保存在一相指定格式的文件中,然后通过插原创 2016-07-15 14:59:35 · 3408 阅读 · 0 评论 -
Unity-命令模式-UnDo
在调用一些简单的方法实现一系列的动作时,回退的问题比较重要。作为一款用户体验良好的产品而言,有回退功能将显得比较人性化,想想如果我们常用的window,在删除一个文件后无法恢复将变得多么的糟糕。更为直观的例子是在玩一些小游戏时,比如象棋、推箱子,提供了悔棋的功能,用户有了更多选择的余地。 本文主要将的将是在Unity中实现一个以常听说的命令模式为设计原理,实现一个可以撤销移动、旋原创 2016-07-28 19:00:04 · 2169 阅读 · 0 评论 -
Camera
Camera的正确使用,进一步完善中原创 2015-09-09 21:03:41 · 536 阅读 · 0 评论 -
Unity3D 调用 winform的颜色对话框
在Unity 的 安装目标(一般是”D:\Program Files\Unity\Editor\Data\Mono\lib\mono\2.0“)中有一些直接可以放置在Plugins文件夹下的动态连接库文件,其中System.Drawing和Sytem.Windows.Form是文本的核心。由于需要一个展示用的Demo,其中需要修改一些颜色的参数,最好能有个对话框。刚好前一段时间用到了选择文件和原创 2016-08-29 19:53:37 · 3943 阅读 · 0 评论 -
webGL平台Unity打开Color窗口
前一段时间写过一个windows平台下unity程序打开颜色窗口的方法原创 2016-09-22 20:22:05 · 2100 阅读 · 0 评论 -
Networking_FpsDemo
一、创建场景。命名场景为Main二、创建NetWorkManager空对象。并添加脚本NetWorkManagerHUD(NetWorkManagerhttps://docs.unity3d.com/Manual/UNetManager.html?_ga=1.90521311.433409425.1476685957The High Level APIhttps:/翻译 2016-10-21 13:34:02 · 498 阅读 · 0 评论 -
用户数据-序列化
说起数据保存与加载,过去开发过程中直接想到的不是xml,json,sqlite就是csv这些可以直接在外部进行编辑的数据保存方式。实际软件中需要大量用户数据保存,而并不用直接用其他软件打开,只需要专用的软件也就是开发者自己做的界面显示。这种情况下,才突然回过神来,原来以前做的设置信息,用户使用过程中的缓存点这些基本的信息我居然用那么多浪费资源的保存方式。早用二进制序列化和反序列化不就好了,少了原创 2016-10-22 12:10:29 · 505 阅读 · 0 评论 -
利用状态模式CSV文件序列化
简介: 在unity3d中可以使用使用继承自scriptObject类并添加CreateAssetMenu属性方便实现类的序列化,但值得注意的是这种方式并不支持程序打包之后数据的保存。 当然常用的还有xml和json的方式来保存类的信息,在需要的时候加载出来,这方面就不多说了。但是直观的来说,表最适合一些简单的数据类型的记录,键值对最简单。 特别是一个一些程序的配制或者标题对原创 2016-09-27 19:41:03 · 1112 阅读 · 0 评论 -
Text->AudioClip .Unity3D
简要说明利用在线的方式,实现在程序中将文本转换为语音貌似是非常简单的一个问题。可以参看这篇文章但要注意的是,Unity中并不支持将mp3通过WWW加载并转换为AuidoClip,所以要实现转换效果还必须要转换格式为Wav或者是ogg,还真有人这么做了,看NAudio是怎么实现的。我也试过这种方式,发现打包时会报没有system.window.form的问题。而且显然这种方式并不能用原创 2016-10-14 19:10:08 · 1935 阅读 · 0 评论 -
利用EditorWindow配制序列化数据表格
简介:程序开发中需要连接网络或在程序外部进行配制的数据,一般不保存在unity自身序列化的文件中。但一些固定的数据类型,利用unity3d自身的序列化功能,配合Editor编程可以方便快速的制作可扩展的数据加载模块,需要更换数据源也变得十分便利。本文就一个比较复杂的可序列化类,利用Editor窗口编程,实现数据的快速配制。一、数据模型1、准备一个数据类DataItem,需要为类添加原创 2016-11-22 17:11:46 · 3859 阅读 · 0 评论 -
C#模板生成
简要说明 创建代码有多种方式。最简单的,就按编辑器最初始的方法生成。稍微会点的就可以自己修改编辑器的模板。再深入一点的就可以自己定义一系列代码模板,保存到文本文件,再读出来,然后修改一些模板信息。用unity3d程序,我倒是习惯了在这程序中创建一个script而不是在vistual studio中去新建代码。这样的话,所有的代码类型,如Interface,struct,enum都需要在创建出一原创 2018-02-04 23:16:50 · 7633 阅读 · 2 评论