【ハルシオンブログ】uGUIのButtonを非活性化(Interactableをfalse)にした時に文字が浮かびあがってしまう問題対応。
こんにちは。2月も前半が終わろうとしています。
来週には・・・・ポケガだすぞっと。
そうだ。
Unityのボタンってあるじゃないですか。
あれ不活性化(InteractableをFalse)にした時、ボタンの文字って逆に浮かび上がってしまいますよね。

なんかInteractableを外した時に文字も暗くしたいですよね。

こうなるのが理想。
ってことで、これを作っていきたいと思います。
まずはImageを1つボタンにつけます。

次に、コンポーネントを1つ作成し、Buttonにつける。
[ButtonInteractableComponent.cs]
ButtonInteractableComponentをButtonオブジェクトにつけて、先ほどButtonにつけたimgBtnFilterをobjFilterにアサインします。

ButtonのTransitionをColorTintからNoneにしておけば完成。
これで、文字もちゃんと非活性化のようになります。

今回Updateでinteractableの状態をみたのですが、interactableが変わった時のイベントとかってないんすかね?
もっと簡単にできそうなんだけど・・・・
ってことで、ボタンのInteractableのONOFFの時に文字色も一緒に暗くする方法でした。
もっといい方法あったら教えてちょうだい!
では、あでゅ~ノシ
来週には・・・・ポケガだすぞっと。
そうだ。
Unityのボタンってあるじゃないですか。
あれ不活性化(InteractableをFalse)にした時、ボタンの文字って逆に浮かび上がってしまいますよね。

なんかInteractableを外した時に文字も暗くしたいですよね。

こうなるのが理想。
ってことで、これを作っていきたいと思います。
まずはImageを1つボタンにつけます。

次に、コンポーネントを1つ作成し、Buttonにつける。
[ButtonInteractableComponent.cs]
using UnityEngine;
using UnityEngine.UI;
[RequireComponent(typeof(Button))]
public class ButtonInteractableComponent : MonoBehaviour
{
[SerializeField] GameObject objFilter;
Button btn;
bool interactableMode;
void Awake() {
btn = GetComponent<Button>();
interactableMode = btn.interactable;
}
private void Update() {
if (interactableMode != btn.interactable) {
interactableMode = btn.interactable;
ChangeInteractable();
}
}
void ChangeInteractable() {
if (interactableMode) {
// 元の色に戻す
objFilter.SetActive(false);
} else {
// interactable OFFの色にする
objFilter.SetActive(true);
}
}
}
ButtonInteractableComponentをButtonオブジェクトにつけて、先ほどButtonにつけたimgBtnFilterをobjFilterにアサインします。

ButtonのTransitionをColorTintからNoneにしておけば完成。
これで、文字もちゃんと非活性化のようになります。

今回Updateでinteractableの状態をみたのですが、interactableが変わった時のイベントとかってないんすかね?
もっと簡単にできそうなんだけど・・・・
ってことで、ボタンのInteractableのONOFFの時に文字色も一緒に暗くする方法でした。
もっといい方法あったら教えてちょうだい!
では、あでゅ~ノシ
Category: 開発日記(Unity)
« 【ハルシオンブログ】Inspectorで参照を設定するときにUnitySearchを使う方法 | 【ハルシオンブログ】DropDownの背景を変える »
コメント
| h o m e |