Kelo's blog


  • 首页

  • 分类

  • 关于

  • 归档

  • 标签

Unity-Shader(一)顶点着色去与片段着色器的通讯&语义

发表于 2018-08-24 | 分类于 Unity | 阅读次数
| 字数统计 1.1k | 阅读时长 4

每次说想学东西,却没有时间,嫌工作忙,加班..最近有时间了,还是没能学下去。其实不是没时间,不是忙,只是没有真正的想过怎么去学习,或者说自学能力差,自控能力差。

索性就从最基础的学吧,做笔记,内容很简单,但能坚持才是重点。

Shader 顶点着色器与片元着色器之间的通讯

结构体

这里顶点着色器与片元着色器的通讯,是通过结构体来传递的,那么就先说一下结构体的定义吧

1
2
3
4
5
struct structName{
Type Name : Semantic;
Type Name : Semantic;
...
};

Semantic 语义是不可以省略的,结构体结束后要有 分号 “;”

阅读全文 »

Unity-对象池

发表于 2018-08-15 | 分类于 Unity | 阅读次数
| 字数统计 1.7k | 阅读时长 7

游戏开发,实现功能是基础,性能优化才是重点。

实际开发中会遇到很多类似的情况,同一个物体要创建很多个,比如背包中的Item、伤害飘字、子弹、怪物等。像这种情况,如果初始化的时候一次性全部创建出来,难免会发生卡顿的情况,常见的是背包打开界面的时候发生卡顿。

通常这种情况,大家都会想到,在进游戏的时候预先加载出来一部分Item,只是隐藏掉(或者移动它的位置),在使用的时候再拿出来,这样避免了一次性创建很多造成的卡顿。

还有一种情况是,频繁的创建销毁物体,导致性能消耗很大,这个时候我们的思路是,第一次使用的时候创建,不用的时候缓存下来,而不是直接销毁(可以隐藏),这样再次使用就可以直接去拿了。

阅读全文 »

Unity插件之-更新SVN

发表于 2018-08-10 | 分类于 Unity | 阅读次数
| 字数统计 368 | 阅读时长 1

SVN作为版本控制,团队协作,代码托管,是一个很好的工具,当然别的工具 也很强大,比如Git等,不说哪个强大,这里只是针对Unity做一个一键更新SVN的插件,这样免去了要打开文件夹-右击-更新SVN的繁琐步骤,只需要在Unity界面按一下快捷键就可以了,这里我设置的快捷键是Alt+s,这个快捷键是自定义的,如果觉得不喜欢可以更改。

原理很简单,就是在Unity里执行SVN的更新命令,并设置一些更新时的属性配置,就行了。

阅读全文 »

Unity客户端脚本自动化

发表于 2018-08-06 | 分类于 Unity | 阅读次数
| 字数统计 1.7k | 阅读时长 7

起因

从毕业起一直在做Unity客户端的工作,每个基础模块的开发都会有一些重复性的工作,最近也在网上看到有编写工具来完成这些重复性的工作。

  • 根据美术给的素材拼UI预设Prefab
  • 获取Prefab的引用
  • 定义事件
  • 或许还有框架基类的一些方法和变量要实现

上述的四个流程 都可以通过插件实现,第一个可以去网上找一些插件,比如PSD2UGUI,一个开源项目。

这里着重说一下下面的三个工作怎么实现自动化生成脚本。


阅读全文 »

Unity-射线检测点击的UI

发表于 2018-07-06 | 分类于 Unity | 阅读次数
| 字数统计 460 | 阅读时长 1

前言

平时的开发中,创建出来的prefab往往会有很深的层级关系,当游戏运行的时候如果发生明明鼠标点击了,但是没有响应的情况往往会有两种情况

  • 脚本问题
  • 组件问题

脚本问题自然需要我们去排查脚本,比如有没有关联,有没有处理点击事件等等,但是如果是组件问题比如目标层级,或者碰撞太小等,有的时候排查起来会比较费劲,所以写个小工具目的是,当鼠标放在ui 上时,显示出当前位置可以点击的ui名字和它的路径。


阅读全文 »

Unity-Debug-封装-富文本

发表于 2018-07-05 | 分类于 Unity | 阅读次数
| 字数统计 591 | 阅读时长 2

Unity自带的日志输出可以说是很全面的,但是在实际开发中,往往会产生大量的log输出,自然影响效率是不用说的,而且有些时候我们需要根据log输出的时间来确定代码的执行顺序,这个时候难免会用到每个日志输出的时间。

Unity 自带的日志输出缺点

  • 没有开关,可以直接关闭或者打开log
  • 输出的日志不带有时间戳
  • 颜色单一
阅读全文 »

Unity-Shader-边缘色

发表于 2018-06-25 | 分类于 Unity | 阅读次数
| 字数统计 380 | 阅读时长 2

边缘着色。代码控制改变颜色和控制开关

先看代码

Shader 代码

阅读全文 »

Unity-Shader-小记

发表于 2018-06-25 | 分类于 Unity | 阅读次数
| 字数统计 267 | 阅读时长 1
  • 初学Shader记录一下 float4 tex2D(sampler2D samp, float2 s)

2D纹理采样,CG内置函数。
内部实现分为以下几步:

  1. 用图片的宽高度乘以uv数值,得到像素坐标。widthPixel=samp.xs.x;heightPixel=samp.ys.y;
  2. 因为取到的数值基本上都是带有小数点的,也就是说不是一个整数,这个时候,需要看图片的过滤设置了。也就是Unity3d的图片设置中的Filter Mode。
  3. Filter Mode是Point,不过滤,就会取像素点最靠近的整数,也就是四舍五入,得到像素点的坐标,然后出去图片中,这个坐标的颜色。
  4. 双线性过滤,会取目标像素的附近4个像素,然后进行插值计算,得到平均颜色值,作为最终颜色。适合纹理由小放大过程中,出现的“马赛克”。
  5. 三线性过滤,在双线性过滤的基础上考虑到了深度LOD,会进行两次双线性过滤,来使不同的LOD等级纹理中,更加平滑的过渡。

Unity-UGUI

发表于 2018-06-21 | 阅读次数
| 字数统计 662 | 阅读时长 2

由于刚刚换了公司,所以现在正在接触新框架Entitas和UGUI,因为以前都是在使用NGUI,所以,现在每天感觉都在接触新的东西,可谓是每天都充满了挑战呀,哈哈。

今天做一个功能,类似与吃鸡游戏的小地图和大地图,功能大概包括周围人物怪物标识,场景物资标识,玩家和队友再地图上的标点和 自身与标点的划线、缩放、拖拽等

因为设计点击和拖拽,所以需要单独监听这两个事件,但是我发现UGUI 的事件执行顺序是这样的

阅读全文 »

吃鸡手游小地图开发

发表于 2018-06-21 | 分类于 Unity | 阅读次数
| 字数统计 841 | 阅读时长 4

需求:做一个吃鸡游戏的小地图,包含放大缩小,拖动,标记点,自己位置与标记位置连线,显示周围敌人的声音(脚步,开火等)

这里包含一个需求,就是再地图放大的时候要以自己人物的位置为基准点,也就是说放大到最后需要吧自己的人物移动到屏幕的中间,当然再缩小,还是按照这个思路来,如果放大后发生拖动,则以拖动后地图显示区域的中心为基准点缩放。有点绕……看一下最终实现效果图。

最终效果

阅读全文 »
123
Kelo

Kelo

29 日志
3 分类
10 标签
GitHub
友链
  • no-nothing
© 2020 Kelo
由 Hexo 强力驱动
主题 - NexT.Muse
本站访客数 人次 本站总访问量 次