侯捷C++学习笔记:基础

1.类

  • 带指针的类
  • 不带指针的类:大多数不需要析构函数

每天一点UWA:第二十周

小结&新的开始

  • 从今年的7月29号发布第一周的笔记算起不知不觉已经二十周了,当时的想法也很简单就是下定决心读完当时算下来是168篇文章。5个月过去了,在写这篇的文章的时候基本上已经通读完了所有厚积薄发版块的关于unity的文章,真的感觉这是我这些年来做的最有毅力的一件事情。可以说在这二十周里面对于unity的理解尤其是图形学上学到了很多东西,而且也学会了很多优化的理论和别人实践的方法。
  • 理论已经学习完了,在后面的工作中就是一个实践的过程了。现在的项目会开始使用GOT工具进行优化的工作,真正的把优化这条路走下去。
  • 由于UWA出文章的速度不可能太快,而且自己的工作也很忙,所以每周的笔记可能会改成每月一篇了,继续加油。
  • 还有就是UWA都开始搞UE了,还有什么理由不开始学UE。

每天一点UWA:第十九周

AssetBundle

在移动平台上打AssetBundle时,为了控制包体大小,会开启PlayerSettings中的Optimize Mesh Data,对网格文件使用范围比较多的资源有较好的优化效果。 然而这带来了一个问题,就是在部分使用网格的特效中,美术会对模型上一些顶点做特殊处理,以达到一种网格遮罩的效果,而这个设置需要用到网格的顶点色。然而在开启Optimize Mesh Data这一选项后,打出来包中Mesh上的顶点色会丢失。 请问有什么比较好的解决方法,既能使用此方法优化网格,又能保留网格的顶点色效果?

  • 一般来说,开启“Optimize Mesh Data”选项,引擎会在发布时遍历所有的网格数据,去除其多余数据,从而降低其数据量大小。需要注意的是,这里的“多余”数据是指Mesh数据中包含了渲染时Shader中所不需要的数据,即如果Mesh数据中含有Position、UV、Normal、Color、Tangent等顶点数据,但其渲染所用的Shader中仅需要Position、UV和Normal,则Mesh数据中的Color和Tangent则为“多余”数据,引擎在发布游戏时,会将这些数据自动去除。
  • 开启这个选项是一把双刃剑。对于在Runtime情况下有更换Shader需求的Mesh,建议研发团队对其特别注意。如果Runtime时需要为某一个GameObject更换更为复杂、需要访问更多顶点属性的Shader,则建议先将这些Shader挂载在相应的Prefab上再进行发布,以免引擎去除Runtime时会使用到的网格数据。

Unity特效学习:动画

Unity动画创建

  • 选中物体后按Ctrl+6可以开启动画编辑器。
    image

Unity特效学习:粒子

参数

  • 只记录一些特别的参数
  • Prewarm: 预热,效果是直接播一个周期后的效果。也就是呈现一个周期的最终效果。目前来看应该是用到一些一开始就呈现效果的场合。
  • StartSpeed:这个是很常规的参数,但是当为负数时粒子方向会相反。值得留意。
  • Color:
    • Gradient:梯度,更像是设定一个颜色的变化范围。但是某个粒子从创建之后颜色不会变化。
    • Random:粒子颜色从两个值随机取
    • 还有梯度随机
    • 纯粹随机:这个可以自定义N个颜色区间。
    • 梯度编辑器很强大。注意:点击颜色条上沿添加的节点是调整alpha的,下沿是调整颜色的。藏的好深啊。

每天一点UWA:第十八周

AssetBundle

最近的项目使用了AssetBundle的资源管理方案,对于Shader的部分全部放到了Always include里面(这里不仅是系统内置的Shader,还包括自定义的Shader),然后打Bundle资源的目录里是不包含任何Shader的。但是现在发现,Shader还是被作为依赖关系打进了最终的Bundle里,而且造成了冗余,问问大家有没有遇到这个情况呢?我的Unity版本是5.3.4f1。

  • 首先,只要资源在工程里并且需要用到它,就会被打包进AssetBundle。
  • 然后Always include里built-in Shader不会被打包进AssetBundle,这是一个特例。这个特例仅限于没有放到工程里的部分,有些项目会自己下载built-in Shader放到工程里,这样的Shader和自己写的没有区别,也会被打包。
  • 最后,你遇到的问题是正常现象,需要你们通过资源管理的策略避免掉。

每天一点UWA:第十七周

AssetBundle

当一个Texture被一个material和sprite都引用的时候,将三者分别打包,出现texture内存重复问题。

  • 原文较长,总结一下就是:如果一个贴图一方面被当成Sprite使用,另一方面被当成Texture使用(譬如RawImage或者Material),就会断开引用产生多份。目前解决办法是保证用Sprite的Prefab及Material打包在一个AssetBundle。
  • 这是一个重要的问题,而且这个问题也是看unity版本的。

Gamma校正与线性空间

前言

  • 近期看了一篇文章,主要讲了如何处理lightmap在Android平台下下偏暗的问题。引发了对gamma校正的好奇。

Unity Android二次开发经(血)验(泪)谈(史)

主要参考的是这篇文章,不过在这个期间遇到了各种的问题,在这里写出来,希望看到的人能够少走弯路。

准备工作

  • 安装Android Studio(以下用AS代替),然后通过它下载Android SDK和tools。
  • AS目前已经是3.0版本,在3之前不支持java8,也就是说没有lambda和一些新的特性。
  • 从AS上可以下载到的build-tool是27,但是最新的tools是unity不支持,会在输出工程的时候报错,目前我使用的是26。
  • PS:实际上在这几天的尝试过程中使用27在unity端会有一个can not get xx list的错误,通过网上查询说是build tools版本的问题。而AS端似乎也有问题,不过没有记清楚。

PHP的OOP

  • 在类中可以使用public(公有),protected(受保护)或 private(私有)来修饰属性和方法。如果不修饰默认是public。
  • 类中用var定义变量,var $name,使用方式$this->name
  • 构造函数function __construct(),析构函数function __destruct()
  • 继承class Child_Site extends Site,使用extends关键字
  • 实例化类
Your browser is out-of-date!

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

×