NGUIのUIButtonの画像をscriptで変える

UnityのNGUIのUIButtonを使ってボタンをつくり、Prefab化して、 実際に使うときにはPrefabをInstantiateして、画像だけが違うボタンをたくさん作りたかったので、

UISprite uiSprite = GetComponent<UISprite>();
uiSprite.spriteName = "newSpriteName";

としていたのですが、

NGUIを3.4.8から3.5.4にバージョンアップしたら、UIButtonがHover状態からNormal状態に戻ったときに画像がPrefab化したときの画像に戻ってしまった。 Assets/NGUI/Scripts/Interaction/UIButton.csを見てみると、今の状態に応じてSetSpriteしているみたい。

    protected override void SetState (State state, bool immediate)
    {   
        base.SetState(state, immediate);

        switch (state)
        {   
            case State.Normal: SetSprite(mNormalSprite); break;
            case State.Hover: SetSprite(hoverSprite); break;
            case State.Pressed: SetSprite(pressedSprite); break;
            case State.Disabled: SetSprite(disabledSprite); break;
        }   
    } 

mNormalSpriteがPrefab化したときのスプライト名になっていたのが原因ぽかったので

UIButton uiButton = GetComponent<UIButton>();
uiButton.normalSprite = "newSpriteName";

としてNormal状態のスプライト名を指定したらうまくいった!よかった!