- 博客(220)
- 资源 (2)
- 收藏
- 关注
原创 Unity3D asset bundle 格式简析
Unity3D 的 asset bundle 的格式并没有公开。但为了做更好的差异更新,我们还是希望了解其打包格式。这样可以制作专门的差异比较合并工具,会比直接做二进制差异比较效果好的多。因为可以把 asset bundle 内的数据拆分为独立单元,只对变更的单元做差异比较即可。网上能查到的资料并不是官方给出的,最为流行的是一个叫做 disunity 的开源工具。它是用 java 编写的,只有
2015-12-02 09:38:13
905
原创 Unity uGui RawImage 渲染小地图
制作类似 RPG 游戏时,可能会需要显示小地图。小地图的制作一种方式是用另一个摄像机来渲染到一张纹理上,实时显示到UI界面。以Unity 5.0 的 UI 系统为例:在地图正上方放置一个摄像机,设置其 Culling Mask,比如:Ground(地面)、MinimapSign(玩家怪物标识),创建一张 Render Texture,将 Target Texture 属性指向这
2015-11-27 09:30:04
1223
原创 总结使用Unity 3D优化游戏运行性能的经验
作者:Amir Fasshihi流畅的游戏玩法来自流畅的帧率,而我们即将推出的动作平台游戏《Shadow Blade》已经将在标准iPhone和iPad设备上实现每秒60帧视为一个重要目标。以下是我们在紧凑的优化过程中提升游戏运行性能,并实现目标帧率时需要考虑的事项。当基本游戏功能到位时,就要确保游戏运行表现能够达标。我们衡量游戏运行表现的一个基本工具是Unity内置分析器
2015-11-04 23:19:33
938
原创 【Unity3d】3d角色换装实现原理及步骤
1、角色模型制作 unity3d支持Skin动画 但是不支持Physique动画 会发现Physique动画在unity里严重变形 因此在模型的骨骼动画的制作上面 要用Skin 当然也可以做成Physique 然后用插件转换一下 3dsmax的插件PhyToSkin 3dsmax中转换之前 为了避免出错 先隐藏骨骼 然后对绑定了骨骼
2015-10-30 19:38:05
1452
原创 Strumpy Shader Editor入门教程
对于3D游戏来说,有很多绚丽的效果,都是靠shader(着色器)来实现的。不过很多朋友估计都不会编写shader,阿赵我自己也只是看了个入门,明白了它的原理,很多具体的效果都写不出来的。这次来介绍一个Unity3D的第三方shader编辑器:Strumpy。这个编辑器是完全可视化编辑,使用起来相对简单一点。先来看看我们这次需要做的例子:我们需要使用Strumpy,编辑出这样
2015-10-30 18:53:52
607
原创 再详细的介绍一下Unity5的AssetBundle
之前曾经写了一篇博客介绍Unity5的AssetBundle,结果似乎很受关注。不过似乎很多人看了之后都不懂,主要是因为不太明白AssetBundle是什么,它的依赖关系和结构是什么的,就直接想拿代码去用,而导致了很多人说看不懂啊,说什么有错误啊,诸如此类。我想了一下,还是应该从最基础的东西说起,不厌其烦的说,才会省去大家加我QQ问问题了,毕竟平时上班忙,看到一些人把我当翻译词典查,我肯定会态度不
2015-10-30 18:32:33
710
原创 Unity3D项目程序加密2——对dll进行混淆
之前一篇文章阿赵已经简单的介绍了怎样把自己写的代码打包成dll动态链接库,然后在Unity3D里面用。那么接下来的事情似乎就很简单了,我们在Unity3D里面写脚本,到最后完成时,把核心的代码剪切出去打包成dll文件再放回项目里面。这样似乎别人就不能直接修改你的代码了。事实真的是这样吗?这里假设我们在Unity3D里面写的代码抽象成这样一个Test类,里面包含了公开和私有的变量,有自带
2015-10-30 18:15:01
562
原创 基于Unity行为树设计与实现的尝试
查阅了一些行为树资料,目前最主要是参考了这篇文章,看完后感觉行为树实乃强大,绝对是替代状态机的不二之选。但从理论看起来很简单的行为树,真正着手起来却发现很多细节无从下手。总结起来,就是:1、行为树只是单纯的一棵决策树,还是决策+控制树。为了防止不必要的麻烦,我目前设计成单纯的决策树。2、什么时候执行行为树的问题,也就是行为树的Tick问题,是在条件变化的时候执行
2015-10-26 19:20:46
1505
原创 使用行为树(Behavior Tree)实现游戏AI
谈到游戏AI,很明显智能体拥有的知识条目越多,便显得更智能,但维护庞大数量的知识条目是个噩梦:使用有限状态机(FSM),分层有限状态机(HFSM),决策树(Decision Tree)来实现游戏AI总有那么些不顺意。 试试Next-Gen AI的行为树(Behavior Tree)吧。 虽说Next-Gen AI,但距其原型提出已有约10年时间,而微软Halo系列估
2015-10-26 16:42:46
990
原创 C#调用C++ dll时CallingConvention调用约定详解
C#调用C++ dll时,我们会在引入方法上写CallingConvention属性,这是指定调用在非托管代码中实现的方法所需的调用约定。c++ 输出的函数调用约定是多种的 1、Cdecl 调用方清理堆栈。 这使您能够调用具有 varargs 的函数(如 Printf),使之可用于接受可变数目的参数的方法。2、FastCall 不支持此调用约定。
2015-10-24 10:12:31
7409
1
原创 C#线程系列(1):BeginInvoke和EndInvoke方法
一、线程概述在操作系统中一个进程至少要包含一个线程,然后,在某些时候需要在同一个进程中同时执行多项任务,或是为了提供程序的性能,将要执行的任务分解成多个子任务执行。这就需要在同一个进程中开启多个线程。我们使用C#编写一个应用程序(控制台或桌面程序都可以),然后运行这个程序,并打开windows任务管理器,这时我们就会看到这个应用程序中所含有的线程数,如下图所示。如果任务
2015-10-22 18:05:24
708
原创 浅析StackTrace
我们在学习函数调用时,都知道每个函数都拥有自己的栈空间。一个函数被调用时,就创建一个新的栈空间。那么通过函数的嵌套调用最后就形成了一个函数调用堆栈。在c#中,使用StackTrace记录这个堆栈。你可以在程序运行过程中使用StackTrace得到当前堆栈的信息。class Program { static void Main(string[] args)
2015-10-22 16:49:32
2879
原创 AssemblyInfo.cs文件的作用
AssemblyInfo.cs主要用来设定生成的有关程序集的常规信息dll文件的一些参数请看以下具体说明://备注: [assembly:AssemblyDescription("用最强的抢劫类写成!")]//产品名称[assembly:AssemblyProduct("无为搜索")]//公司[assembly:AssemblyCompany("无为网络")]//
2015-10-16 18:46:40
1157
转载 全面解析Unity3D自动生成的脚本工程文件
我们在Unity3D开发的时候,经常会看到它会产生不少固定命名工程文件,诸如:Assembly-CSharp-vs.csproj Assembly-CSharp-firstpass-vs.csprojAssembly-CSharp-Editor-vs.csprojAssembly-CSharp-Editor-firstpass-vs.csproj
2015-10-16 17:54:21
607
原创 ubuntu下允许root用户ssh远程登录
SSH服务器,可以通过SSH协议来访问远程服务器,代替telnet和ftp。但是ubuntu默认是不启用root用户也不允许root远程登录的。所以需要先启用root用户 启用root用户:sudo passwd root //修改密码后就启用了。 安装OpenSSH server:1. 使用apt命令安装openssh server$ s
2015-10-16 08:01:53
487
原创 Unity DF-GUI 中文输入以及自动换行
在使用Daikon Forge GUI过程中,发现dfTextbox编辑框无法输入中文,dfLabel和dfRichTextLabel文本控件中文无法自动换行。对源代码进行了更改,以便支持中文。不同版本可能更改的地方会不同,这边的版本为Daikon Forge GUI 1.0.15,Unity 4.3.1。dfTextbox中文输入当前无法输入中文,是因为没有开启I
2015-10-15 10:45:58
1778
原创 unity3d 关于 NGUI的UIDrawCall 和 U3D的drawcall(原)
关于遮挡关系1.NGUI2.6版本不同的panel用z轴调遮挡关系,一个panel下相同的atlas用depth调遮挡关系,不同的atlas用z调遮挡关系2.NGUI3.5版本不管panel是否相同只用depth调遮挡关系,但如果renderQ使用startat则按renderQ计算遮挡关系 关于UIDrawCall1.不管是NGUI的2.6版本还是3.5版
2015-10-15 09:45:36
937
原创 Unity3D教程宝典之 FX Maker
FX Maker是Unity3d一款非常流行的效果制作插件。不但有超过300种效果预制体, 还可以自己制作效果。包含Mesh Effect 和Particle Effect。优点:资源库大,可以将消耗资源非常多的粒子效果转换为帧动画效果。当然也可以直接用不转帧动画的效果,这种效果是画面最好的,但是对显卡开销大。帧动画显卡开销小,占内存大,适合移动平台。Fx Maker还能自动保存。
2015-10-15 08:17:08
2140
原创 Unity3D Resources TextAsset 文本
一些小型数据,可以用txt文本作为媒介,进行获取、传输、修改、存储;比如:User1.2.3.txt,放入 Resources/Data 文件下;一,Unity3d Resources.Load 加载获取数据。 TextAsset TXTFile = (TextAsset)Resources.Load("Data/board" + boardN.ToString() +
2015-10-12 14:54:42
948
原创 Unity3D 物体移动方式总结
1. 简介 在unity3d中,有多种方式可以改变物体的坐标,实现移动的目的,其本质是每帧修改物体的position。2. 通过Transform组件移动物体 Transform 组件用于描述物体在空间中的状态,它包括 位置(position), 旋转(rotation)和 缩放(scale)。 其实所有的移动都会导致position的改变,这里所说的通过Tra
2015-10-10 18:10:44
862
原创 Activator.CreateInstance 方法
Activator.CreateInstance 方法 (Type) 使用与指定参数匹配程度最高的构造函数来创建指定类型的实例。 命名空间:System程序集:mscorlib(在 mscorlib.dll 中) C# public static Object CreateInstance (Type type)Activator.CreateIns
2015-10-08 09:25:14
3518
原创 System.Type类
System.Type类 System.Type类定义了很多成员,可以用来检查某个类型的元数据,它们返回的类型大多位于System.Reflection命名空间中。举例来说,Type.GetMethods()返回一个MethodInfo类型的数组,Type.GetFields返回一个FieldInfo类型的数组等。System.Type提供的完整的成员组是很容易扩展的。使
2015-10-08 09:03:56
1269
转载 Unity3D开发(七):NGUI之UICamera控制触摸,鼠标事件
1. UICamera 功能介绍主要包括UI事件的监听,分发,覆盖范围为此Camera渲染的所有GameObject。事件源包括:鼠标,触摸,键盘,手柄。事件包括:悬停,按下/抬起,选中/取消选中,点击,双击,拖拽,释放,文本输入,Tips显示,滚轮滑动,键盘输入。 2. UICamera 实现流程(1)属性 Event Type:包
2015-09-25 17:27:10
1252
转载 Unity3D开发(一):NGUI之UIRoot屏幕分辨率自适应
NGUI在Unity3D游戏开发中非常常用,而NGUI对于每一个UI场景,都是以一个UIRoot为UI游戏对象树的根的,那么这个UIRoot是起什么作用的呢?先简单看一下UIRoot中的基本属性UIRoot游戏对象的属性只有4个,分别是缩放规则,手动高度,最小高度和最大高度而正是这4个属性,将影响整个UI场景中整体的缩放比例,当设置好这4个属性之后,UIRoot游戏
2015-09-25 16:50:44
502
原创 Unity3D Member Data和Inspector, Serialize的关系
Unity3D 中提供了非常方便的功能可以帮助用户将Member Data在Inspector中显示,并且定义Serialize关系。简单的说,在没有自定义Inspector的情况下所有显示在Inspector 中的属性都同时具有Serialize功能。换句话说,就是你在Inspector看到什么,保存游戏的时候,这些值就会被保存成二进制文件。可被Serialize的变量的定义方法
2015-09-25 12:10:54
456
原创 c#Serializable
参考:C# Serializable System.SerializableAttribute串行化是指存储和获取磁盘文件、内存或其他地方中的对象。在串行化时,所有的实例数据都保存到存储介质上,在取消串行化时,对象会被还原,且不能与其原实例区别开来。只需给类添加Serializable属性,就可以实现串行化实例的成员。并行化是串行化的逆过程,数据从存储介质中读取出来
2015-09-25 12:03:15
506
原创 component之message
主要作用,跨脚本、语言实现功能。Message相关有3条指令:SendMessage ("函数名",参数,SendMessageOptions) //GameObject自身的ScriptBroadcastMessage ("函数名",参数,SendMessageOptions) //自身和子Object的ScriptSendMessageUpwards ("函数名",参数,
2015-09-25 11:57:19
399
转载 【Unity教程】Unity中的C#内存管理
本系列文章主要讲解C#针对unity的内存管理,共有三部分,各部分内容如下:• 第一篇文章讨论.NET和Mono垃圾回收的内存管理基本的原理。也涉及一些常见的内存泄漏来源。• 第二篇文章着重于使用工具发现内存泄漏。Unity Profiler在此方面是一个强大的工具,但它代价太高(unity5中免费)。因此我将讨论.NET反汇编和通用中间语言(CIL),以此展示如何使用免费
2015-09-15 22:28:01
2250
转载 关于C#中的弱引用
一:什么是弱引用 了解弱引用之前,先了解一下什么是强引用 例如 : Object obj=new Object(); 就是一个强引用,内存分配一份空间给用以存储Object数据,这块内存有一个首地址,也就是obj所保存的数据,内存分配的空间中不仅仅保存着Object对象信息,还保存着自己(Object本身)被引用的次数。 当一个对象被强引用的形式创建的时候,本身被
2015-07-13 11:43:55
488
转载 untiy3d 热更新 脚本 动态更新 c#lite 图形学
以下文章转载自图形学大神李总老师的博客.C#Lite是李总自己做的一个开源项目,旨在解决因u3d在ios平台不能动态更新以及lua脚本在u3d上效率低下的问题.作为4年前就给李总当小弟,被李总狂虐的我一定要帮他做做宣传.有需要的朋友可以去http://crazylights.cnblogs.com/观看持续更新的帖子.貌似最近他开始讲些图形学的入门捷径.有兴趣并且不是小白的
2015-07-10 18:10:57
912
转载 Unity3d热更新全书-加载(一)从AssetBundle说起
Unity3D动态下载资源,有没有解?有,AssetBundle就是通用解,任何一本书都会花大幅篇章来介绍AssetBundle.我们也来说说AssetBundle我们试全面的分析一下Unity3D提供的资源加载机制1.Resources//内嵌资源,使用方法Resources.Load,可以加载任意种类的资源,不能动态修改,卒。2.StreamingAssets//随
2015-07-10 18:10:08
544
转载 MonoBehaviour生命周期讲解
最先执行的方法是Awake,这是生命周期的开始,用于进行激活时的初始化代码,一般可以在这个地方将当前脚本禁用:this.enable=false,如果这样做了,则会直接跳转到OnDisable方法执行一次,然后其它的任何方法,都将不再被执行。 如果当前脚本处于可用状态,则正常的执行顺序是继续向下执行OnEnable,当然我们可以在另外一个脚本中实现这个脚本组件的启动:this.enab=tru
2015-07-10 15:51:26
802
转载 Unity3d之MonoBehaviour的可重写函数整理
最近在学习Unity3d的知识.虽然有很多资料都有记录了,可是我为了以后自己复习的时候方便就记录下来吧!下面的这些函数在Unity3d程序开发中具有很重要的作用.Update 当MonoBehaviour启用时,其Update在每一帧被调用。LateUpdate当Behaviour启用时,其LateUpdate在每一帧被调用。FixedUpdate 当MonoBehavio
2015-07-10 13:06:38
1029
转载 NGUI之UICamera控制触摸,鼠标事件
1. UICamera 功能介绍主要包括UI事件的监听,分发,覆盖范围为此Camera渲染的所有GameObject。事件源包括:鼠标,触摸,键盘,手柄。事件包括:悬停,按下/抬起,选中/取消选中,点击,双击,拖拽,释放,文本输入,Tips显示,滚轮滑动,键盘输入。 2. UICamera 实现流程(1)属性 Event Type:包
2015-07-08 12:57:58
696
转载 Directional Shadow Details 平行光阴影细节
This page explains shadows from Directional lights in detail.此页面详细介绍了平行光阴影。Directional lights are mostly used as a key light - sunlight or moonlight - in an outdoor game. Viewing distances can
2015-07-08 11:19:55
547
转载 有关Unity3D的OnRenderImage()和Blit()的一些问题
大家好!本人最近在使用Unity3D做master阶段的图形学实验平台。在实验过程中会频繁的对多个不同的RenderTexture(以下简称RT)进行一些运算,因此自然会用到Blit这个函数。在实验中,我们遇到了一些非常神奇的问题,希望能跟大家一起讨论一下。Blit(src,dest,mat,pass)函数的作用,按照Unity官方API的说法是将src这个RT用mat这个材质中的某个pass
2015-07-07 15:13:36
20874
5
转载 四元数与欧拉角之间的转换
在3D图形学中,最常用的旋转表示方法便是四元数和欧拉角,比起矩阵来具有节省存储空间和方便插值的优点。本文主要归纳了两种表达方式的转换,计算公式采用3D笛卡尔坐标系: 图1 3D Cartesian coordinate System (from wikipedia) 定义分别为绕Z轴、Y轴、X轴的旋转角度,如果用Tait-Bryan angle表示,分别为Yaw、P
2015-07-07 14:31:07
3148
转载 Unity3D调用自己封装的dll
之前总感觉会封装dll组件的都是大牛级别的程序员做的事情,然后供给菜鸟级别的调用。感觉为了保护自己的源码不会被他人知道,然后就封装一个dll供人家调用,那样就觉得很牛, 今天我也尝试摸索了一下,感觉也就那么回事,但只是简单的测试而已,其实会写封装的,封装的好的还是很牛的,哈哈,那让我们也来假装“牛”一次吧!首先要申明的是,unity3d支持C#语言,但只有pro版本才支持.net2.0,其
2015-07-07 11:26:53
885
转载 Unity3D自带例子AngryBots的分析
研究一下Unity3d自带的AngryBots项目,了解基本的游戏运行机制: 1. 人物的动作控制逻辑 ***Player对象*** [外形] Player对象里有一个对象具有Skinned Mesh Renderer组件,该组件使用的Mesh名为main_player_lorez。 类似的还有表达武器的,名为main_weapon001的GameObject。 [操作]: (Inpu
2015-07-06 18:11:18
1192
转载 Gizmos画圆(原创)
Gizmos是场景视图里的一个可视化调试工具。在做项目过程中,我们经常会用到它,例如:绘制一条射线等。Unity3D 4.2版本截至,目前只提供了绘制射线,线段,网格球体,实体球体,网格立方体,实体立方体,图标,GUI纹理,以及摄像机线框。如果需要绘制一个圆环还需要自己写代码。using UnityEngine;using System;public class
2015-07-06 16:05:37
431
URP Debug Views 1.0.4.zip
2021-07-23
房燕良-虚幻4渲染系统架构解析
2019-02-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人