2018.8.14笔记

setsiblingindex(idx)设置兄弟结点先后顺序时,若idx处已有结点X,则结点X及其后的所有节点后移

gc alloc,就是申请堆内存,堆内存申请无处不在,不可能保持为0,
U3D文档中说,尽可能保持这个值为0,是说在UPDATE中,因为UPDATE是个频繁调用的函数,
就算每帧有一点内存申请,时间累积下来也就会有很多,就会引发GC。

Note that some script methods cause allocations when running in the Editor, but do not produce allocations after the project has been built. GetComponent is the most common example; this method always allocates when executed in the Editor, but not in a built project.
【Understanding the managed heap】

一,对扩展开放,对修改封闭
1,模板方法: 有一个固定的算法框架,但算法的各步骤允许重写,利用虚函数让子类重写
2,策略模式 有多种方法可以灵活切换时,
例: 各国税收计算
stra->stra1,stra2,stra3
var ps = setstretage(new stra1())
ps->calc()
var ps1 = setstretage(new stra2())
ps1->calc()
二,解决功能类组合爆炸
3,装饰者模式,
stream->filestream,networkstream,memorystream
bufferedStream, cryptoStream, ....
var b1 = new bufferedStream(new filestream())
var b2 = new bufferedStream(new networkstream())
var b3 = new bufferedStream(new memorystream())
new cryptoStream(b1)
new cryptoStream(b2)
new cryptoStream(b3)
new cryptoStream(new filestream())
new cryptoStream(new networkstream())
new cryptoStream(new memorystream())

4,桥接模式 bridge,与装饰者模式有很像,感觉像是装饰模式和策略模式的合体
abstract-> impAbs
funclassA,funclassB, funclassC
其中:impAbs中有 RefinedOperation,在其中调用 funclassA或funclassB或 funclassC中的Operation

var abstract* pabs = new impAbs()
pabs->SetImpl(new funclassA())
pabs->RefinedOperation() //调用A的operation,并在其基础上进行优化
pabs->SetImpl(new funclassB())
pabs->RefinedOperation()//调用B的operation,并在其基础上进行优化

5,工厂模式
5.1简单工厂模式
把对象的生成放到一个工厂函数中,使用者只需传入类型就能得到产品
car = factory.CreateCar("bwm")
其中 CreateCar只是简单的通过if else来new不同对象并返回
5.2工厂方法模式
因为简单工厂在增加新类型产品时需要修改 CreateCar,违反了对修改封闭,对扩展开放原则,
因此考虑将变化封装出来,于是便有了工厂方法模式
bmwFactory, benchiFactory, xcarFactory
bmw = bmwFactory.createCar()
benchi = benchiFactory.createCar()
5.3抽象工厂方法模式,在5.2基础上进行更多的工厂类,并有抽象基类
6,命令模式: 命令发送者-命令-接收者,发送者和接收者通过命令解耦
发送者执行命令,命令调用接收者,接收者执行动作
-------------------------------------------------------------------------------
public interface ICommand{
void Execute();
}
public class ConcreteCommandA : ICommand{
public ConcreteCommandA(Receiver receiver){this.receiver = receiver;}
public void Execute(){this.receiver.DoA();}
}
public class ConcreteCommandB : ICommand{
private Receiver receiver = null;
public ConcreteCommandB(Receiver receiver)
public void Execute(){this.receiver.DoB();}
}
public class Receiver
public void DoA(){}
public void DoB(){}
}
public class Invoker{
public void SetCommand(ICommand command)
public void RunCommand(){ command.Execute(); }
}
public class Client
{
public Client()
{
Receiver receiver = new Receiver();
Invoker invoker = new Invoker();
invoker.SetCommand(new ConcreteCommandA(receiver));
invoker.RunCommand();
invoker.SetCommand(new ConcreteCommandB(receiver));
invoker.RunCommand();
}
}
-------------------------------------------------------------------------------
7,中介模式,很简单的一个模式,它和代理模式的区别?
中介注重于A,B两个类不直接交互,而是通过中介交换信息,就像中介所介绍对象
代理模式侧重于代理A去做事,可能是向B交互,也可能是更广义的做任务事
代理主要是为了给A包装一层,可用于安全处理等

8,代理模式,将A放入代理类B中,通过B操作A

————————————————————————————————————————————————————————————

1,顶点压缩,reduces the file size of the Mesh, but might introduce irregularities.
2,查看build log,可以看到各种类型的资源所占有空间大小,及空间占用从大到小排列的具体各资源的列表
3,U3D在导入纹理时是边导边压缩的,因此导入图片会很慢,在开发时可以关掉这个选项:prefercen, compress asset on import

减小打包尺寸
一,纹理
1,选择合适的纹理压缩方式
2,更改纹理尺寸:并不需要改实际图片,只需要在设置中更改max size就行了
3,2的N次方规则+4N规则
二,MESH
1,模型属性面板的MODEL分页卡中选择Mesh Compression low/medium/high
这可以减小打包的MESH大小,但可能会导致不精确(动作,蒙皮等),手册上说这并不会减小运行内存
其实应该也是会的,因为模型顶点少了啊,若说在运行时顶点数目又通过某种算法还原了,倒有可能。
2,减小关键帧数量
Animation keyframe reduction produces smaller data files and uses less memory at run time; generally you should always have it enabled.
这个是可以很明显的减小运行内存,又可以减小打包尺寸
三,DLL
U3D必须的几个DLL: mscorlib.dll boo.lang.dll unityscript.lang.dll unityengine.dll
默认情况下不带system.dll,system.xml.dll,这两个DLL大约1M多,当使用了相关类时,这两个DLL会被自动导入

四,Reducing mobile .NET library size

avatar存在的目的: 1,动作遮罩,2,动作重定向
------------------------------------
Animation Layer syncing????
------------------------------------
重定向???

posted on 2018-08-14 08:13 时空观察者9号 阅读(...) 评论(...) 编辑 收藏

2018.8.14笔记相关推荐

  1. 2018.8.8笔记

    2018.8.8笔记 void print(int a[2], int n){//OK,数组退化为指针 } void print(int a[0], int n){//错 } 数据类型的本质:固定内存 ...

  2. 计算机系职教周方案,琼软院软件〔2018〕14 号:关于印发《软件工程系2018年“职业教育 活动周”活动方案》的通知...

    琼软院软件[2018]14号 海南软件职业技术学院软件工程系 关于印发<软件工程系2018年"职业教育 活动周"活动方案>的通知 各位老师: <软件工程系2018 ...

  3. 2018.11.14成立我的博客

    2018.11.14成立我的博客 转载于:https://www.cnblogs.com/zengxx/p/9957509.html

  4. 学习手记(2018/7/14~2018/7/18)——快乐纪中

    2018/7/14:普通的纪中一天 儿子兄弟表示法 将一颗多叉树转换为二叉树的方法,左子节点连原树的第一个儿子,右子节点连原树的右边的兄弟 适用范围:树形dp 数位dp常见方法 状态压缩 分类讨论 记 ...

  5. 训练日志 2018.11.14

    这周的计划是 Ford.SPFA 看完了,2-SAT 看了一半,并查集没按计划完成,但把最小生成树看了,还算可以... 下周 2-SAT.次短路径.并查集... 今晚打比赛..菜的一批...做了 4. ...

  6. 暑期训练日志----2018.8.14

    训练第16天. 上午因为百度之星的比赛,还是没法做题,看了看教练发的 DP 专栏,忽然觉得以前学的 DP 还是不够深,就跑去把之前整理的 DP 和背包九讲重新看了一遍 下午把昨天个人赛没写的两个题搞明 ...

  7. WebStorm2016.2 注册码及激活,2018.6.14亲测有效

    License server激活 这可能是最简单的了,在激活框,选择 License server, 输入: http://idea.iteblog.com/key.php (2018.6.14可用)

  8. 雅思英语作文计算机和历史,2018年1-4月雅思口语话题part2高分范文之:历史时期(Describe a historical period)...

    江湖传说2018年1月雅思口语变题季已开启,各路屠鸭er纷纷慷慨赴考场.为了给各位英雄壮胆,小雅君特准备了2018年1-4月雅思口语part2话题参考范文,范文篇篇精彩不容错过,各路考鸭们,时间不多了 ...

  9. 5814. 【NOIP提高A组模拟2018.8.14】 树(期望 + 倍增)

    5814. [NOIP提高A组模拟2018.8.14] 树 Problem 给定一棵nnn个点的树,m" role="presentation">mmm次询问,每次 ...

最新文章

  1. TSNE算法是什么?该算法有什么缺陷?
  2. Python基础--文件操作
  3. js中window.location.search的用法和作用
  4. HihoCoder - 1457 后缀自动机四·重复旋律7(后缀自动机)
  5. C语言简易行编辑器,简单的行编辑器C语言.doc
  6. 教你用Java7的Fork/Join框架开发高并发程序
  7. 2016-2017 ACM-ICPC Southwestern European Regional Programming Contest (SWERC 2016)
  8. kafka消息队列的概念理解
  9. 如何查看静态库中有哪些函数
  10. 声智科技陈孝良:没有好的语音数据收集,语音识别和交互不可能做好
  11. CDH运维常见问题-cloudera-scm-agent 已死,但 pid 文件存在
  12. 网安学习——信息收集
  13. 360修复服务器漏洞,360安全漏洞不需要修复怎么设置
  14. 贾又福大象鸿蒙,2016贾又福工作室师生优秀作品全国巡展
  15. 移动端屏幕适配和css美化浏览器自带的滚动条
  16. Ronald Van Loon/Greg White带你领略Hadoop/Spark大数据CCA175认证(一)
  17. Android程序员在大厂工作是什么体验?
  18. 使用SendGrid宇宙函数发送电子邮件
  19. 真正拖垮年轻人认知水平的,是幸存者偏差!
  20. 奇安信“科技冬奥”项目成果亮相国家科技计划成果路演行动

热门文章

  1. Mysql在离线安装时启动失败:mysql服务无法启动,服务没有报告任何错误
  2. 若依微服务版怎样新增业务子模块并使用代码生成实现对表的增删改查
  3. PostMan怎样携带登录信息请求后台接口防止出现无法访问资源问题
  4. Winform中设置Dialog的显示位置居中
  5. Linux-权限管理相关操作
  6. Java空指针异常解决java.lang.NullPointerException解决心得
  7. 5、ShardingSphere 之 公共表
  8. python中itemgetter函数_Python中的sorted函数以及operator.itemgetter函数
  9. Hello,SDK!数据采集黑客松大赛重磅开启,Mac投影仪任你拿!
  10. Java Socket编程如何建立两者关系