最早写shader的时候, 发现一件事, 在Inspector中修改Material时, 所有使用同一个Material的渲染都会生效. 但是用代码修改Sprite Render的Material的时候, 只有被修改的那个会生效.
一开始没多想这个问题, 直到最近给UI写Shader的时候, 发现用代码修改Image的Material依然会全部生效.
只修改了左边的Material, 但是对右边的也生效了
测试了之后才发现, 代码修改Sprite Render的Material的时候, 会自己把Material替换成原本Material的新实例.
但是修改UI的Image的Material并不会. 解决的办法也很简单, 在修改Material前自己Instantiate一个Material的实例再修改就可以了.