Unity做项目事半功倍的插件

MTE (Mesh Terrain Editor) 地形编辑器

基于模型的地形转换、编辑工具。

就不详细介绍了,大家看帖。

中文论坛帖: Mesh Terrain
Editor,基于模型的地形编辑器,T4M的替代品

英文论坛帖: Mesh Terrain Editor, a mesh-based terrain converter and
editor

大家可以尝试下 免费版,如果感觉需要的话,请支持
专业版,谢谢!

另外,推荐ConsoleE,增强版的Unity3D控制台。

有很多好用的功能,个人觉得最方便的是

1. 双击打开堆栈某一行的代码(免费版只能打开前两行)

2. 可逐行复制log内容

大家不妨试试!

http://u3d.as/5YZ

Qhierarchy

你管理一个有几千物体的场景,点击单个物体,关掉它显示,或者修改它的static方式之类的根本就是噩梦,用Qherarchy的话,稍微点击下小眼睛关闭就好,对我来说是必备插件,而且可以很容易查找到物体是否有attach
script,以及脚本是否出错,非常好使。

我知道很多人是用Hierachy2 的,那个的功能和Qhierarchy类似,但是当时在unity4
-5的版本升级里面出很多bug,而且功能我觉得有些太复杂,反而不如Qhierachy便宜好用

Haste Pro

unity内的everything,场景东西多到死,资源乱到想跳楼,要查找某个特定的物体或者component感觉整个人都要不好了,这时候使用本插件药到病除,不知不觉就买了正版。

Asset hunter

啊西坝,混蛋美术塞了五千个材质球在asset里面啊!!,基本都没用过啊!! 选择材质时候冒出来满屏幕!! 怎么破!

用asset hunter轻松分辨场景是否有使用到此asset,一键删除,世界恢复了和平

跟 Build report tool功能有点像,大多数情况下asset hunter用着更爽利

Legacy 2 PBR

Unity4项目升级到unity5了,材质还是那个老味道….难道一个个改么,,, 这时候Legacy 2 PBR一键拯救你

其他的就不是每个项目都需要用了,动画用默认,特效用默认就好,(可以买几个滤镜)有些东西如finalK shaderforge,A* project,Camera
Director等等等等等等等都是极好的,不过那些插件玩一下就都要付出很多精力时间了,不是项目需要就别入坑了,何况这些东西任何一个都足够写一大篇长文来分析和赞美了。

我推荐上面几个的理由是,unity插件应该是在某种使用的思路下被统合起来的,否则不如不用,而上述几个主要是加速你的工作效率,所以尽可大胆使用。

另外,稍微有点经济实力的还是应该购买正版,不要问我任何求插件问题,拉黑你哦!

常用的 Unity 插件

Advanced PlayerPrefs Window

用来管理 PlayerPrefs 数据,超好用

JsonDotNet

JSON 的序列化/反序列化插件。这个插件是支持 iOS, Android, WP8等多平台且 Bug 最少的一个。

iOS,Andoird 统一插件

Prime31 的 IAP Combo,AdMob Combo 插件。同时支持 iOS 和 Android 平台。

UMeng 统计插件,TalkingData 统计插件,两者其实都差不多。

PrefabEvolution

Prefab 嵌套插件。其实也就那样,设计阶段好好规划一下Prefab的结构,用嵌套的地方其实不多。

NGUI,曾经的 UI 不二之选。现在换 UGUI 了就不再用了。

2DTookit,用得不多。虽然 Unity 已经支持2D,但这个软件依然有很多方便的地方。

iTween, DoTween, LeanTween, 对象动画类插件,其实都差不多。挑一个用就行。

AssetBundle Manager

可以在不build、部署AssetBundles的情况下,就用editor模拟加载本地、远程AssetBundles,支持AssetBundle
Variants,让测试、编辑AssetBundle的工作变得非常方便。

uFrame

用unity做游戏实质上就是用轮子组系统的过程,无论抵制轮子还是造轮子,支持插件还是反对插件,都不重要。重要的是整体的框架是否健壮合理,中间的焊缝是否严实。

推荐uFrame,你的代码结构和质量飞速上升。项目必备,一群天才的插件,有一个健康的社区讨论。

playmaker

如果做游戏的过程中需要编程,并且你的编程能力并不是非常强大的话,强烈推荐playmaker,主打『visual
scripting』,方便轻松并且方便能很高效率的通过脚本实现各种游戏功能(包括特效),asset store常年best seller ,好评飞起。

价格有点小贵,不带学生折扣45磅左右,如果是学生的话可以通过edu邮箱在官网申请打折扣,便宜100多好像?对于不是编程或者CS背景,偏3D建模和视觉设计的人(比如我)来说,做游戏真的简单了一万倍,简直就是把小格子连来连去……

然而,

也有许多经验丰富的老工程师 表示最好不要用,比如这位:

[Should you use Playmaker in
production?](https://link.zhihu.com/?target=http%3A//va.lent.in/should-you-
use-playmaker-in-production/)

理由太长了请自己看。

然而,

不是经验丰富的老工程师,

又需要高效率的实现游戏功能,

没有丰富夯实的CS基础又想要看上去吊炸天的小特效,

完全推荐playmaker。

JumpCommand

我一直在用自己写的小工具
JumpCommand
。只要给函数添加一行代码,就能用命令行来调用该函数,拿来调试或测试用的,很方便。

Mesh Baker

项目开发的时候经常会大量使用大规模的Mesh,导致Draw Call过高。而Mesh
Baker扮演了网格烘焙器的角色,其工作原理是将网格和材质合并,从而降低渲染的Draw Call。

SimpleLOD

比较适合大规模场景的制作开发。在处理多人在线的项目(如MMO游戏)时,按照我们以往的优化方法是尽可能降低Draw
Call和减少渲染消耗,在远处使用低级LOD,在Run-
time时根据相机距离切换合适的LOD,使得在手机性能有限的情况下尽量渲染更多的角色,达到更好的效果。

而SimpleLOD恰好可以满足这一点,除了同样拥有Mesh Baker所具有的Mesh合并、Atlas烘焙等功能,它还能提供Mesh的简化(Mesh
Baker无法提供),并对动态蒙皮网格进行了很好的支持。该插件可在Run-
time和Editor中都可以使用,同时开放了源码,大家可以根据项目的实际情况而作修改。

具体的使用方法大家可以参阅:
好插件让你事半功倍!【资源篇】

FairyGUI

一个游戏大部分的工作量是在制作UI。无论是NGUI,或者是UGUI,都只是一个基础的UI制作工具,制作过程需要程序员全程参与,而且很多功能也只能通过写代码完成,非常不友好。

FairyGUI是不同于NGUI和UGUI的一个独立的Unity
UI系统,他最大的特点是提供一个对美术、策划都友好的UI编辑器,不需要编码就能实现绝大部分UI制作的需求。使用FairyGUI使Unity的UI制作进入标准化时代。FairyGUI编辑器非常简单易用,都是纯2D的操作,不需要理解相机、网格等复杂的3D概念。FairyGUI编辑器还同时提供了支持Starling/Egret/Laya的SDK,这意味使用FairyGUI可以使你的UI资产以及UI技能在3D主流引擎、页游主流引擎,H5主流引擎上零成本迁移。

使用FairyGUI,解决了Unity制作UI的很多痛点,例如多国语言支持,可视化编辑UI动画,图文混排(包括文字和动画混排),虚拟列表(数量巨大的列表数目也不卡顿)、循环列表,像素级点击检测、3D
UI,VR UI(轻松制作出曲面UI), 内置手势库,更带有自动生成代码的功能。

使用FairyGUI可以大大提供Unity UI制作UI的效率,减轻了程序员的负担,同时也为企业节约了成本。

好插件让你事半功倍!

Mesh Baker

我们在项目开发的时候经常会大量使用大规模的Mesh,导致Draw Call过高。而Mesh
Baker扮演了网格烘焙器的角色,其工作原理是将网格和材质合并,从而降低渲染的Draw Call。

下面,我们就来谈谈使用方法:

Texture Packing

我们常常会遇到角色网格相似,但是纹理繁杂细碎的情况。这时我们需要把纹理合并在同一张图上。纹理拼合的操作面板如下图所示:选择不同的网格来拼合,Texture
Baker自动分析其Shader,Size等属性,最后点击Bake Material Into Combined Material,即可完成拼合。

Mesh Batching

在纹理拼合后已经形成为一张图片了,这时候我们需要进行Mesh拼合,即使用Mesh
Baker来烘焙网格。在此,我们新建一个新的GameObject,点击Bake就把3个Mesh烘焙在一个Object上了。

同时,在进行了这两步之后,我们会发现Draw Call上的变化。

合并前

** **

合并后

不难发现,合并前12个Draw Call,合并后只有2个,从而在一定程度上降低渲染压力。

对Skinned Mesh进行拼合

Unity引擎无法原生支持蒙皮网格的Draw Call Batching,而Mesh Baker能将多个Skinned mesh合并。

经过合并后,人物的材质已经相同,所以我们能在上图中看到这些角色只产生了一个Draw Call。同理,即使再加入更多的角色也能合并成非常少的Draw
Call,从而减少渲染耗时。

除此之外, Mesh Baker还支持将Mesh Renderer与Skinned Mesh
Renderer一起合并。比如开发中常用到的道具如帽子、剑等,使得角色在换装时也只产生一个Draw Call,非常实用。

在使用skinnedmesh时有几个注意点:

合并后将原始模型的Bone保持Active;

Disable原始模型的Skinned Mesh Renderer;

确保原始的Animation始终在运行;

如果需要Mesh Rendering与Skinned Mesh 一起合并,则需要保证在其在同一张Texture Atlas和Mesh容器中。

SimpleLOD

除了Mesh
Baker,另一个插件SimpleLOD也比较适合大规模场景的制作开发。在处理多人在线的项目(如MMO游戏)时,按照我们以往的优化方法是尽可能降低Draw
Call和减少渲染消耗,在远处使用低级LOD,在Run-
time时根据相机距离切换合适的LOD,使得在手机性能有限的情况下尽量渲染更多的角色,达到更好的效果。

而SimpleLOD恰好可以满足这一点,除了同样拥有Mesh Baker所具有的Mesh合并、Atlas烘焙等功能,它还能提供Mesh的简化(Mesh
Baker无法提供),并对动态蒙皮网格进行了很好的支持。该插件可在Run-
time和Editor中都可以使用,同时开放了源码,大家可以根据项目的实际情况而作修改。

** **

我们拿以下原始模型来举例:

打开插件后有如下一些选项:点击Merge child meshes

我们知道Unity支持的网格顶点数不能超过65536,但是当我们把很多物体合成一个Mesh时很可能会超过这个限制。而这个插件会针对这种情况进行自动处理,可以看到下图中的两辆车Merge后成Merged
part1和Merged part2 。

烘焙Atlas

下图是Texture
packing,根据模型的Material自动把不同类型的Texture分类显示出来,在合并的时候,会自动把同类型的Texture合并。

合并之后的效果对比:Draw Call数量由原来的136降至24个。

选择了模型之后,点击Simplify mesh,它会尽可能在保持原样的基础上简化网格。如下图,汽车模型的网格面片数从六万多顶点数减少到了两万七。

同时,它也能自动生成不同级别的LOD。这里有6层LOD(从大到小),点击Bake
LOD后它会自动计算,不需要大家手动操作。我们可以通过更改脚本达到希望的效果。

如下就是使用了SimpleLOD后的效果。该插件最大的特色即是对Skinned mesh动画角色网格提供了很好的支持。

以上是我们今天推荐的插件,但愿能在资源优化中祝你一臂之力。今后我们将会结合以往的行业服务经验,为您推荐更多高效的开发利器,尽情关注!

DoTween对UI进行DoFade操作存在问题及解决办法

Unity版本:5.2, 5.4

当使用this.GetComponent<Image().material.DOFade(0,
2).SetEase(Ease.InBounce);来对UGUI的Image进行褪色操作的时候本质是对UI的Graphic对象(Text,Image等都为Graphic的子类)的material进行操作,下例是对Text组件进行褪色操作:Transform.GetComponent().material.DoFade(0,1)。虽然脚本只挂在一个Text组件的物体上,但1秒之后发现,整个UI界面全部变为透明。

(我也很纳闷,cube01.GetComponent<Renderer ().material.color =
Color.black;这样的代码照理说是这样执行的(<http://www.jianshu.com/p/ababf547d992):

Material lastMat = cube01.GetComponent<Renderer ().material

Material m = Instantiate(lastMat) as Material

cube01.GetComponent<Renderer ().material = m

m.color = Color.black

应该是最自己持有的material进行操做。。。

经测试发现,所有使用缺省material的组件都是使用的默认的material,而这个material只存在一份,所有UI组件使用的默认material都只是该material的引用,在DoTween对其进行褪色操作之后,该material的alpha值保持为0不变,且游戏重新开始也不会将其alpha值重置为1。

解决办法:

导入DoTween后请确保Setup DoTween, Tools/DoTween Utility Panel/Setup
DoTween…。导入后就可以使用Image.DoFade了。

使用Unity自带的Graphic.CrossFadeAlpha(float alpha, float duration, bool
ignoreTimeScale)函数来操作

自己扩展DoTween的方法,下面是我扩展的一个例子,可以参考DoTwen官网的Creating custom plugins
example

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
/  DoFadeTest.cs



/  Project: GUITest



/  Created by zhiheng.shao



/  Copyright  2016年 zhiheng.shao. All rights reserved.



/  Description



using UnityEngine;



using System.Collections;



using DG.Tweening;



using UnityEngine.UI;



using DG.Tweening.RickExtension;



public class DoFadeTest : MonoBehaviour



{



    // Use this for initialization



    Start()



    {



        .GetComponent<Image().DOFade(, ).SetEase(Ease.InBounce);



    }



}



namespace DG.Tweening.RickExtension



{



    public static class DOTweenExteion



    {



        public static Tweener DOFade( Image image, float endValue, float
duration)



        {



            Debug.Log("CustomDoFade");



            return DOTween.To(image.AlphaGetter, image.AlphaSetter,
endValue, duration);



        }



        private static float AlphaGetter( Image image)



        {



            return image.color.a;



        }



        private static  AlphaSetter( Image image, float alpha)



        {



            Color oldColor = image.color;



            oldColor.a = alpha;



            image.color = oldColor;



        }



    }



}

附:DoTween官网

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×