首先写了设置Linerenderer不同属性的函数,写在Linkmodel的start里,fixedupdate也写了一部分更新positions,根据手动设置的linematerial更新material(方便后面调试bug),
1.Resources.load()
网上查了N种都不能用
官方文档也写的不清楚(🐶==)
Final:
把要加载的material,手动放在resources文件夹下面,然后,用相对resources文件夹的路径,去load<material>(name),没有扩展名,也不加as material
2.设置link的size:
用暴露的widthmultiplier接口
3.设置link的height:
暴露linkheight接口,在fixedupdate部分根据新的linkheight更新bezier两个辅助点位置。
4:考虑之后的地图板块可能会高低起伏,因此startpos需要加上所在区域板块的高度
object.getcomponent<Mesh>().size好像是这个
这里也帮助我决定了一个抉择:
1.用name->(lat,long)->pos
2.gameobject.find(name).transform.pos
当初选择option1,并且已经写好了untils的函数,但是考虑到这样Link和板块是割裂的,查找高度的时候还是要建立连接,因此不如option2。
当然utils函数也没有白写,loc2pos 在pointmodel 会用得到的.
5.linerenderer的startcolor,endcolor, gradient color,material,shader之间如何相互作用决定最终的效果
根据unity官方文档:
1.startcolor到endcolor直接会形成渐变。
2.colorgradient直接在editor里或者在代码里setkeys定义渐变(keys最多8个好像)八个vertex之间混合形成渐变。
3. linerenderer.material,第一版本的线的效果其实全靠material实现,在editor里调整了底色和Innerlighting,出来的效果如下图,此时的material.shader是mixedrealitytookit/standard,这个shader提供了innerlight的效果选项
那么为什么还要继续折腾?
因为希望从from到to使用两个地区的颜色渐变完成的,也就是想通过1/2来完成,但是发现这个和material的shader有冲突,
简单来说,上述shader压根不理会Linerender自己的colorgradient,而能够显示或者根据linerenderer的渐变颜色进行处理additive/multiply的shader如下:
这个使用了MRTK/standard的shader但是好像也混合出了本身的颜色的,没有复现,存疑?好吧,看起来是环境光,和linrenderer.color没关系
(好烦)
目前的解决方案只有重写一个shader??
这个不要太麻烦啊==
more:
这里有一个问题是两个地区颜色不同,然而传播过程意味着,在传播过去之前,两个地区一定是颜色不同的,
传播过去之后才会变化,时间维度是通过播放展示,为什么line的颜色会是固定的呢,应该是根据to地区的颜色变化,Line的颜色也变成from地区的颜色,流动的效果。