DevNotes_190918
ECS这个嘛,我现在的Unity价值专家班主任也没有讲啥,就说了官方一定有录像让看。
我翻腾了半天,现在是这么个情况:
整个ECS框架是Unity官方很看好且正在大力发展的技术方向,但即使已经推出了MegaCity这样的DEMO,但是仍然挂着不知道什么时候才能摘掉的preview,直播录像我就找到两个,是Unite 2019 LA上的两场,一个是CTO讲什么是ECS,一个是技术高管讲ECS的进化史。是的并没有人教怎么用ECS,现在靠谱一点的教程反而是B站上Unity中国做的那两期总共也就一个多小时的简易教程。learn.unity上面的ECS教程很少很短,而且也就仅仅是Roll a Ball的水准,完全没有生产指导的作用。
倒是Manual里面的ECS Package的文档终于放出来了,还没看。
这些是当时做的笔记,ECS进化史那个视频没看完,很长而且同样不怎么能指导生产或学习。
QA环节的问题:
Questions about Lists and Strings. Are there’s gonna eventually
Be supported int
关于list和string的问题,在 struct ICompnentData中是否支持,或是有其他解决方案?
… a way out but I want to write fast code , how do I do that because I need List and I need string.
So , List we actually have ,right , we have dynamic buffer and that is in fact a solution we propose and it is insanely efficient in the way that you don’t have an L1 cache miss because the memory is laid out. You can have an automatic capacity for a small amount of elements and then it flows into a full allocation if it exceeds. So that’s what we think is a good way of dealing with List on a component. So that’s there we can use it, that shipped months ago. And string 没有解决但是会解决的;
Q:自动化ECS有吗?
A:么的;因为 we don’t care ;四年前我们曾经试图优化transform,结果实装就花了一年半,而且带来的收益很小,于是我们决定不这么做。
你想要代码高效运行就要按照能够高效运行的原则去写。
……c#那些好用的容器也基本没了,emmm
https://zhuanlan.zhihu.com/p/41652478
ECS的泛泛之谈-BenzzZX
AAS,addressable Asset System,可寻址资源系统,跟着Unity直播看的,
暂时不知道暂时有什么实际用处,大概以后考虑分发的时候才用得上
不过AB包在做大创的时候用了一下,虽然就用了一点点,但是依然能感觉到后面大坑小坑连成一片虎视眈眈。
==
Public List<AssetReference> m_Characters; ////这个可以在Inspector里面指定,当然也可以代码指定
Bool m_AssetsReady = false;
Int m_ToLoadCount;
Int m_CharacterIndex = 0;
Start(){
m_ToLoadCount = m_Characters.Count;
Foreach( var character in m_Characters){
character.LoadAssetAsync<GameObject>().Completed += OnCharacterAssetLoaded;
}
}
public void SpawnCharacter(int characterType){
if(m_AssetsReady){
Vector3 position = Random.insideUnitSphere *5;
……
m_Characters[chcarcterType].InstantiateAsync(position, Quaternion.identity);
}
}
Void OnCharacterAssetLoaded(AsyncOperationHandle<GameObject> obj){
m_ToLaodCount–;
If(m_ToLoadCount <= 0){
m_AssetsReady = true;
}
}
Void OnDestroy(){
Foreach(var character in m_Characters){
Character.ReleaseAsset();
}
}
可以在AddressableAssetSettings里面开启Send Profiler Events以在Addressable Profiler里面看到
=
查询机制:
LoadResourceLoacationsAsync(label);异步加载可能无法控制顺序,排序索引可能导致不一样;
但是也可以先通过 IResourceLocation 先将所有目标加载,然后再根据该清单详细决定加载;
====
调整 Play Mode Script:
Fast Mode:全本地
Virtual:考虑远端的模拟情况
Packed Play Mode:打包后的真实情况;
===
需要再Build内打包
最近在看《游戏设计艺术》,其实很久之前就在看,不过在工院干这个实在不太行,仅仅是为了不挂科就要花费极大量的精力与时间——半年看了一百来页。现在在动院的度假生活,不到一周能看一百多页,还能看Unity Shader和做开发。
SeeMe的问题是这样的,设计者的水平的问题会体现在,总是想要加很多要素进来,不是说不能做或者做不出来,而是说这个游戏真的需要这么多要素吗?没有这么多复杂讲究的要素真的会影响到玩家体验吗?
这也是我一直想的,设计者的意图到底能不能被玩家感受到?如果玩家感受不到,或者说玩家花了很长时间依然没有接受完全 设计者想表达的东西,那这其实是不好的。
存档真是磨人,之前瞎秀的按需存档现在bug连篇,还不如笨办法全都写到文件里读取的时候也从文件里读。方便省事不费脑子不会出错,就是耗资源且不够优雅,但是优雅又不能提高完成度。
=====
想写一个stg的插件,用ecs写,顺便练手。
之前总是被editor模式的各种复杂的东西吓着,突然想明白为什么不用UGUI在Play模式下开发呢,这样一来受到的限制就少很多了,UGUI再怎么说也比Editor GUI能干的事多吧