0%

项目里大神的封装用惯了都不知道c#本身还有哪些好玩的写法,今天写了些东西查了一路稍微记录下。

default(T)

无法更改,null for reference types and zero for value types.

无法new T()

1
2
3
if (typeof(T).GetConstructor(Type.EmptyTypes) != null) {
return (T) Activator.CreateInstance(typeof(T));
}

Enumerable

IEnumerator

迭代器 这篇详解帮助理解很不错->C# IEnumerator的详解
尤其是2.2的流程

Read more »

简介

出版不久的书,内容很接地气,裂变那章很有帮助,其实很多营销手段都见过,这本书算总结很到位了。
总的来说这本书的内容其实更适合电商、需要卖产品、服务的。

先放一张随书附送的思维导图

Read more »

虽然说别人说过的话,并不能代表自己,听过的道理,并不一定真的是懂了。但有时候,就是有一些话会冒出来,推着自己前进。那些说过这些话的人,或者角色,在那一刻就成为了自己想成为的人。
比如刚才我看了一会儿书,又想放下休息了。这时候这么一句话冒出了出来,“今日心情不好,不练!明日心情太好,不练!人生多的是借口放纵自己,有了一必有二,我还学什么?”虽然只是本言情小说的话,倒也让我继续把书看了下去。本来就一直想着把一些重要的话记下来,不如从现在开始吧,想到了就编辑一下这篇。毕竟,I’m what I read, not what I eat.

Read more »

需求

unity接入sdk需要修改manifest, 用sdk里提供的manifest果然就报错啦~动手自己改又不知道原来是什么,想了一想先把自己的包给解了再修改权限。

解apk包得manifest

转载自:Android 如何查看apk安装包的AndroidManifest.xml文件

用rar打开apk会看到AndroidManifest.xml,打开是乱码,想看到原文解决方案如下。

1、 下载工具AXMLPrinter2.jar工具:下载地址
2、 将要查看的AndroidManfist.xml文件拷贝至与工具相同文件夹下
3、 在当前文件夹打开DOS窗口
4、 执行如下命令

1
java -jar AXMLPrinter2.jar AndroidManifest.xml >> AndroidManifest.txt

执行完该命令后会在该文件夹生成AndroidManifest.txt文件,该文件便是解码后的文件。

Read more »

写在前面

最近正好在重构,正好也在等需求有个空当,就翻起了这本经典之书,摘了觉得有用的概念与片段放在此处。

写此文是为了提炼内容并建立一些思维指针以供查找便利。翻阅后发现此书适合面向对象语言思维抽象优化,对于当前使用C#并遇到过长、重复等问题的我而言可以说是相当有帮助了。

感谢前人(id:容我三思兮)整理让我免去许多打字之苦:https://www.jianshu.com/p/f3c0e3fe48cf

本文收录2、3,6-11章节

书中看到uml图发现需要复习,这篇不错:http://design-patterns.readthedocs.io/zh_CN/latest/read_uml.html

Read more »

打iOS企业包真是神烦神慢,看了一堆文章,一开始打算用jenkins,但是鉴于配jenkins又需要新配一个mac用户……出于各种考虑pass掉了这个方法,但是未来为了效率应该还是会配个。
搜了半天没有什么非常适合的能直接用的脚本,要么参数太多,要么感觉不是在打企业包,于是还是花了一天写了一下。

主要参考:
雨松MOMO Unity3D研究院之IOS全自动打包生成ipa
Shell脚本——Xcode脚本打包

实现功能

一个命令即可获得Xcode工程(位置在项目目录下),自动修改xcode文件以及framework做到适配iphoneX,最后打出企业包(在Desktop)
当前版本比较傻逼的是:路径写的都是绝对路径……配置也都分别写死在了shell脚本和unity脚本里_(:з」∠)_
未来预期:传不同参得到企业/公司包

Read more »

md

链接站内文章的方法

1
{% post_link markdown-learning-by-maxiang 点击这里查看这篇文章 %}
  • markdown-learning-by-maxiang是你的文章名称。如果文章不存在,这段代码将会被直接忽略。
  • 点击这里查看这篇文章是该链接的标题。如果置空,则自动提取文章的标题。

参考:https://github.com/iissnan/hexo-theme-next/issues/978

Read more »

Queue

“Queue”标签。定义渲染顺序 越小越先被渲染。

Queue 索引 描述
Background 1000 通常用这个队列渲染需要绘制在背景上的物体
Geometry 2000 默认值;大部分物体在这个队列。不透明的物体也在这里
接上 这个队列内部的物体的渲染顺序会有进一步的优化
AlphaTest 2450 需要透明度测试物体使用的队列
Transparent 3000 在Geometry和AlphaTest渲染后,再从后往前渲染。透明度混合物体都该用
Overlay 4000 实现叠加效果[如镜头光晕]。任何需要最后渲染的,用这个。
自定义 x 用户可以定义任意值,比如”Queue”=”Geometry+10”
Read more »

以下整理主要摘自《Unity Shader 入门精要》
另外的参考资料:http://wetest.qq.com/lab/view/315.html?from=content_zhihu

image
由图可知CPU、GPU、带宽、内存都可能出现瓶颈。

优化的目标其实是往一个目标上靠,cpu的DrawCall命令刚刚好能被GPU消化,不要让CPU等待(带宽限制),也不要让GPU闲置。如果即使做到了这个,应用帧率还是上不去,那么就只能去削减场景,做有损优化了。

下面将分别列举优化方法。

Read more »

摘自:http://blog.csdn.net/u011047171/article/details/46928463

应用

image

原理

Stencil Buffer&Stencil Test

stencil与颜色缓冲区和深度缓冲区类似 ,模板缓冲区可以为屏幕上的每个像素点保存一个无符号整数值(通常的话是个8位整数)。这个值的具体意义视程序的具体应用而定。在渲染的过程中 ,可以用这个值与一个预先设定的参考值相比较 ,根据比较的结果来决定是否更新相应的像素点的颜色值。这个比较的过程被称为模板测试。模板测试发生在透明度测试(alpha test)之后 ,深度测试(depth test)之前。如果模板测试通过 ,则相应的像素点更新 ,否则不更新。

Read more »

CPU:

对CPU端耗时的影响程度:
*物体个数>材质数目>单个物体面片数 *

以渲染时间<5ms为界

不透明物体:

  • 红米2,华为6P,<60个物体
  • 红米Note2,三星S6:60-120个物体 1200面以下
    对于CPU影响:粒子系统数>粒子数
Read more »

以下整理主要摘自《Unity Shader 入门精要》

效果差异

image
左图是线性空间渲染结果,右图是伽马空间。
可以看出伽马空间下的结果更真实。
默认情况下,Unity使用的是伽马空间,下面是Unity内置设置方法。

Read more »

官网链接:https://docs.unity3d.com/Manual/SL-MultipleProgramVariants.html

Unity5中使用了一种被称为着色器编译多样化(Multiple shader program variants)的新技术,常被称为“megashaders”或“uber shaders”,并通过为每种情况提供不同的预处理指令来让着色器代码多次被编译来实现。

在Unity中,这可以通过 #pragmamulti_compile 或者 #pragma shader_feature 指令来在着色器代码段中实现。这种做法对表面着色器也可行。

在运行时,相应的着色器变体是从材质的关键词中取得的(Material.EnableKeyword和 DisableKeyword),或者全局着色器关键词(Shader.EnableKeyword和 DisableKeyword)。

Read more »