Linerenderer的坑

首先写了设置Linerenderer不同属性的函数,写在Linkmodel的start里,fixedupdate也写了一部分更新positions,根据手动设置的linematerial更新material(方便后面调试bug), 


1.Resources.load()

网上查了N种都不能用

官方文档也写的不清楚(==)

Final:
把要加载的material,手动放在resources文件夹下面,然后,用相对resources文件夹的路径,去load(name),没有扩展名,也不加as material


2.设置link的size:

用暴露的widthmultiplier接口

3.设置link的height:

暴露linkheight接口,在fixedupdate部分根据新的linkheight更新bezier两个辅助点位置。

4:考虑之后的地图板块可能会高低起伏,因此startpos需要加上所在区域板块的高度

object.getcomponent().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地区的颜色,流动的效果。

你可能感兴趣的:(Linerenderer的坑)