纸箱猪的专栏

挨踢民工生涯

Unity 实现文字过长显示省略号

需求:假设有一行文字由于界面空间不足只能显示一部分,那么剩余部分需要被截断,并且显示出来的文字末尾需要添加省略号“…”。比如“一二三四五六七八九十”,最终显示出来的样子是“一二三四…”。 这个需求在 CSS 中倒是挺好实现的。(题外话:这只限于显示出来的文字只有一行的情况。多行的情况下还是没那么...

2018-08-30 18:13:27

阅读数:343

评论数:0

将 Excel 表格导入 Unity 项目

在游戏开发过程中,策划往往会在 Excel 中配置游戏数据,比如物品、技能和 NPC 的属性等。因此如何将 Excel 里的数据导入到游戏中是游戏开发的重要课题。朴实的方法:另存为 csv比较朴实的方法是将 Excel 文件另存为 csv 文件,然后程序员写代码解析 csv 文件。可以将 csv ...

2018-04-29 20:32:27

阅读数:229

评论数:0

用 Animation 实现匀速旋转

年初参加 GGJ 的时候,我曾想偷懒用 Animation 实现物体的匀速旋转。思路很简单,只需要0度和360(或-360)度两个关键帧,然后将动画设为循环播放。当时以为这样事情就成了。谁知做出来的效果是下面这样,物体转完一圈后会停一下:我知道问题就在动画曲线上:只要把曲线弄成一条直线就行。但是当...

2018-04-12 16:58:13

阅读数:601

评论数:0

Aspect Ratio Fitter 和 Image

UGUI 里面 Aspect Ratio Fitter 的作用是保持一个 UI 控件的宽高比。然而 Image 自身就有一个 Preserve Aspect 属性用于保持自己的宽高比。因此起初我就想 Image 是不是就用不上 Aspect Ratio Fitter 了,或者说 Image 自身的...

2018-04-10 20:33:24

阅读数:256

评论数:0

用UGUI Slider做血条时遇到的一个小问题

前段时间想在小游戏中做一个血条UI,自然而然地想到了用UGUI的Slider。在Unity中可以通过编辑器菜单一键创建一个Slider。这样的一个Slider里会包含Background、Fill Area和Handle Slide Area三个部分。其中Handle Slide Area就是滑块...

2018-03-01 23:36:21

阅读数:1295

评论数:1

在Unity的后处理shader中通过屏幕像素坐标和深度贴图反推世界坐标

要通过屏幕像素坐标反推世界坐标,就要知道世界坐标是如何变换为屏幕坐标的。理论上,将世界坐标(x, y, z)变换为(u, v, d)的过程如下: 第一步,将坐标点(x, y, z, 1)乘以从世界坐标系到相机坐标系的转换矩阵(World-to-Camera 4x4 Matrix),将坐标点(x...

2017-03-02 17:59:59

阅读数:4850

评论数:8

Unity的Scene视图中Irradiance模式的作用

Unity官方文档的说明是(下面是我自己翻译的):该模式只显示间接光照(Enlighten生成的实时GI光照贴图的内容)。模型表面的交错覆盖图显示的是辐照度(irradiance)贴图的分辨率。如果实时GI被禁用,那么该视图模式不可选。 试验了一下,效果如下图: 上图的场景中有一束...

2017-02-22 18:57:39

阅读数:874

评论数:0

在Blender中通过法线贴图和顶点位移实现石块地面的凹凸感

先看最终效果: 这个地板在mesh层面其实就只是一个切割(Subdivide)了很多次有很多顶点的Plane: 其实如果只加法线贴图而不做顶点位移的话,一个只有四个顶点的Quad也可以。 添加颜色贴图(可通过3D View的Texture Mode查看贴图应用效果): ...

2017-02-17 18:20:13

阅读数:4263

评论数:0

Unity中有两种Animation Clip

在Unity中,我们有两种方法创建Animation Clip。 一种(后面简称方法一)是选中挂载了Animation组件的GameObject,在Animation窗口中点击Create New Clip创建出来的Animation Clip。 另一种(后面简称方法二)是在Pro...

2016-05-01 21:49:33

阅读数:12049

评论数:3

半透模型内部的深度显示问题

在写半透shader时,我们一般会关闭ZWrite,以免离摄像机近的半透物体会遮挡离摄像机远的半透物体,导致后者完全显示不出来。(如果不理解为何会有这个现象,需要先学习深度缓存、ZWrite和ZTest的概念。) 但是有一次我们在立方体(Cube)上应用一个关闭了ZWrite的半透shader...

2016-03-06 20:45:54

阅读数:1255

评论数:0

从圆心向外流光的魔法阵shader

终于实现出美术同事想要的这个效果了:   下面就来讲述我写这个shader的思路。   首先需要一张魔法阵的底图:   用一个平面(Plane)做模型,将底图贴在模型上:   代码如下: Shader "Inception-Fx/FlowInsideO...

2016-02-20 23:35:14

阅读数:5093

评论数:7

2015年总结

2015年,对我来说可能是进入了瓶颈,并且还有所退步的一年。   这一年已经不再像2014年那样几乎将所有工作重心都放在UI上了。项目的UI风格、工作流程基本已经固定下来,UI框架和配套工具也已经趋于稳定,其他程序员对做UI也已经很熟练。我已经被解放出来可以去做很多别的事。这一年做了一个跨服商...

2016-02-10 13:25:49

阅读数:856

评论数:3

Unity Shader中顶点坐标的大小似乎会受到Draw Call合批的影响

最近美术同事希望我能帮忙做一个由内而外流光的shader,效果类似下图: 我最初的思路是利用模型的顶点坐标:美术制作模型的时候就将模型的原点设在中心。这样我在vertex shader中用length(i.vertex)求出每个顶点到中心的距离,进而在fragment shader中求...

2016-01-12 13:11:45

阅读数:1825

评论数:2

寒假捉虫记——从一段损坏的调用栈开始折腾

放假在家,继续调试《家园》。目前的进度是MinGW上的编译链接都已通过,游戏程序也已经可以跑起来并进入主菜单界面,但加载关卡之后就会闪退。这让我想起了以前上中学时玩盗版游戏的日子。那个年代的单机游戏估计大多是用C/C++写的,一个不小心的内存操作就会让进程崩掉;而且那个年代的操作系统没现在稳定,可...

2015-02-18 13:51:16

阅读数:3494

评论数:0

使用NGUI时遇到物理引擎错误

使用NGUI时偶尔会遇到以下两个报错:Supplied NxActorDesc is not valid. createActor returns NULL. 以及 Actor::updateMassFromShapes: Can't compute mass from shapes: must ...

2015-02-06 12:19:35

阅读数:3913

评论数:2

避免频繁调用GameObject.SetActive

昨天又从主程那学到一招Unity+NGUI性能优化方法。让对象一直保持激活状态(activeInHierarchy为true),而原来的SetActive(false)改为将对象移到屏幕外,SetActive(true)改为将对象移回屏幕内。

2015-02-06 10:15:37

阅读数:16851

评论数:4

Unity+NGUI性能优化方法总结

一共9招。

2015-01-31 22:52:00

阅读数:39763

评论数:14

2014年总结——协作篇

2014年,技术外的事情比技术内有更多的波澜。年初,项目从零开始,团队也是由五湖四海拉来的一帮人组成;策划对ARPG没多少概念,美术对移动端斜45度视角没多少经验,程序和美术对Unity 3D则都不熟。这是最难熬的一个阶段,持续了大半年。

2015-01-18 16:44:25

阅读数:1324

评论数:2

2014年总结——技术篇

2014年我在CSDN的日志数量跌到8篇,看来这一年又比以前更忙了。其实无论在技术内还是在技术外,我在2014年的收获都比2013年多。在一个初创的团队中做事,感觉还是很不一样的。环境变化之快,意外之多,需要我更快速地学习更多更广的技术。   这一年在技术上最大的意外,莫过于将过半的时间都花在...

2015-01-05 00:02:03

阅读数:1579

评论数:3

过度设计,被教育

昨天完善创建角色的游戏服务端逻辑。创建角色失败时,服务端要告知客户端具体的错误原因——比如角色名不可用,或SQL语句错误等。代码中原有的思路是,向客户端发一个ID为CREATE_PLAYER_ERR的包(这个ID是应用层的协议),包内含有具体的错误码,客户端在CREATE_PLAYER_ERR包的...

2014-02-19 19:10:55

阅读数:1400

评论数:2

提示
确定要删除当前文章?
取消 删除
关闭
关闭