2020年1月1日 星期三

Unity筆記:用程式更改Sprite和Animator設定Write Default衝突的小問題。


通過程式更改Sprite應該是一件很簡單的事情,

public Sprite mySprite;

this.GetComponent<SpriteRenderer>().sprite = mySprite;

不過這天實際操作起來卻一直沒辦法正確反應,
論壇上另一種作法是載入資源,
不過這兩種寫法應該是幾乎一樣的,
研究了半天才想到應該是物件有Animator覆蓋了預設的sprite,


這個隱藏在animator中每個動畫的小設定Write Default,
取消後它就不會在動畫結束後跑回原本的sprite了,
之前的問題是因為程式雖然成功更改了sprite,
但動畫管理員在播完後又把它改了回去,
有時還會一抖一抖的,
取消後就完全正常了,
唯一需要注意的是,
Write Default會回到預設的那個sprite,
譬如動畫是從0~1~2~3這樣,
之前如果沒有特別寫0~1~2~3~0也會變回去,
取消後就要自己再補一幀或者直接用程式在動畫播完後改想要的sprite也可以,
總之,可以在動畫撥放前後、以及靜態的情況下自由更改物件的sprite,
基本上就完全掌握了物件的圖像表現方式了。
(*´﹃`*)

Write Default其實還有更複雜的動畫銜接問題,
不過這天處理的只是動畫與更改sprite的關係,
另外,其實也可以直接用動畫來更改想表現的sprite,
說起來有點繞口,總之最終的表現方式是滿意的且效能良好就可以了。
ლ(´ڡ`ლ)

沒有留言:

張貼留言

你發現了這篇網誌的留言板,在這留點什麼吧|д・)