/// <summary> /// マウスオーバー時のテキスト指定 /// </summary> /// <param name="go">ボタンのGameObject。Add()の戻り値</param> /// <param name="label">マウスオーバー時のテキスト。null可</param> public static void SetText(GameObject go, string label) { var t = go.GetComponent <UIEventTrigger>(); t.onHoverOver.Clear(); EventDelegate.Add(t.onHoverOver, () => { SysShortcut.VisibleExplanation(label, label != null); }); var b = go.GetComponent <UIButton>(); // 既にホバー中なら説明を変更する if (b.state == UIButtonColor.State.Hover) { SysShortcut.VisibleExplanation(label, label != null); } }
public unsafe static void SetText(GameObject go, string label) { //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Invalid comparison between Unknown and I4 UIEventTrigger component = go.GetComponent <UIEventTrigger>(); component.onHoverOver.Clear(); EventDelegate.Add(component.onHoverOver, () => { SysShortcut.VisibleExplanation(label, label != null); }); if ((int)go.GetComponent <UIButton>().state == 1) { SysShortcut.VisibleExplanation(label, label != null); } }
/// <summary> /// 歯車メニューにボタンを追加 /// </summary> /// <param name="name">ボタンオブジェクト名。null可</param> /// <param name="label">ツールチップテキスト。null可(ツールチップ非表示)。アイコンへのマウスオーバー時に表示される</param> /// <param name="pngData">アイコン画像。null可(システムアイコン使用)。32x32ピクセルのPNGファイル</param> /// <param name="action">コールバック。null可(コールバック削除)。アイコンクリック時に呼び出されるコールバック</param> /// <returns>生成されたボタンのGameObject</returns> /// <example> /// ボタン追加例 /// <code> /// public class MyPlugin : UnityInjector.PluginBase { /// void Awake() { /// GearMenu.Buttons.Add(GetType().Name, "テスト", null, GearMenuCallback); /// } /// void GearMenuCallback(GameObject goButton) { /// Debug.LogWarning("GearMenuCallback呼び出し"); /// } /// } /// </code> /// </example> public static GameObject Add(string name, string label, byte[] pngData, Action <GameObject> action) { GameObject goButton = null; // 既に存在する場合は削除して続行 if (Contains(name)) { Remove(name); } if (action == null) { return(goButton); } try { // ギアメニューの子として、コンフィグパネル呼び出しボタンを複製 goButton = NGUITools.AddChild(Grid, UTY.GetChildObject(Grid, "Config", true)); // 名前を設定 if (name != null) { goButton.name = name; } // イベントハンドラ設定(同時に、元から持っていたハンドラは削除) EventDelegate.Set(goButton.GetComponent <UIButton>().onClick, () => { action(goButton); }); // ポップアップテキストを追加 { UIEventTrigger t = goButton.GetComponent <UIEventTrigger>(); EventDelegate.Add(t.onHoverOut, () => { SysShortcut.VisibleExplanation(null, false); }); EventDelegate.Add(t.onDragStart, () => { SysShortcut.VisibleExplanation(null, false); }); SetText(goButton, label); } // PNG イメージを設定 { if (pngData == null) { pngData = DefaultIcon.Png; } // 本当はスプライトを削除したいが、削除するとパネルのα値とのTween同期が動作しない // (動作させる方法が分からない) ので、スプライトを描画しないように設定する // もともと持っていたスプライトを削除する場合は以下のコードを使うと良い // NGUITools.Destroy(goButton.GetComponent<UISprite>()); UISprite us = goButton.GetComponent <UISprite>(); us.type = UIBasicSprite.Type.Filled; us.fillAmount = 0.0f; // テクスチャを生成 var tex = new Texture2D(1, 1); tex.LoadImage(pngData); // 新しくテクスチャスプライトを追加 UITexture ut = NGUITools.AddWidget <UITexture>(goButton); ut.material = new Material(ut.shader); ut.material.mainTexture = tex; ut.MakePixelPerfect(); } // グリッド内のボタンを再配置 Reposition(); } catch { // 既にオブジェクトを作っていた場合は削除 if (goButton != null) { NGUITools.Destroy(goButton); goButton = null; } throw; } return(goButton); }
public unsafe static GameObject Add(string name, string label, byte[] pngData, Action <GameObject> action) { //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Expected O, but got Unknown //IL_0078: Unknown result type (might be due to invalid IL or missing references) //IL_007d: Unknown result type (might be due to invalid IL or missing references) //IL_0094: Unknown result type (might be due to invalid IL or missing references) //IL_0099: Unknown result type (might be due to invalid IL or missing references) //IL_00a8: Unknown result type (might be due to invalid IL or missing references) //IL_00ad: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00be: Unknown result type (might be due to invalid IL or missing references) //IL_00c3: Unknown result type (might be due to invalid IL or missing references) //IL_00d2: Unknown result type (might be due to invalid IL or missing references) //IL_00d7: Unknown result type (might be due to invalid IL or missing references) //IL_00d8: Unknown result type (might be due to invalid IL or missing references) //IL_00dd: Unknown result type (might be due to invalid IL or missing references) //IL_0117: Unknown result type (might be due to invalid IL or missing references) //IL_011c: Expected O, but got Unknown //IL_0132: Unknown result type (might be due to invalid IL or missing references) //IL_0137: Unknown result type (might be due to invalid IL or missing references) //IL_0142: Unknown result type (might be due to invalid IL or missing references) GameObject goButton = null; if (Contains(name)) { Remove(name); } if (action == null) { return(goButton); } try { goButton = NGUITools.AddChild(Grid, UTY.GetChildObject(Grid, "Config", true)); if (name != null) { goButton.name = name; } EventDelegate.Set(goButton.GetComponent <UIButton>().onClick, () => { action(goButton); }); UIEventTrigger component = goButton.GetComponent <UIEventTrigger>(); EventDelegate.Add(component.onHoverOut, () => { SysShortcut.VisibleExplanation(null, false); }); EventDelegate.Add(component.onDragStart, () => { SysShortcut.VisibleExplanation(null, false); }); SetText(goButton, label); if (pngData == null) { pngData = DefaultIcon.Png; } UISprite component2 = goButton.GetComponent <UISprite>(); component2.type = (UIBasicSprite.Type) 3; component2.fillAmount = 0f; Texture2D val3 = new Texture2D(1, 1); val3.LoadImage(pngData); UITexture obj = NGUITools.AddWidget <UITexture>(goButton); obj.material = new Material(obj.shader); obj.material.mainTexture = val3; obj.MakePixelPerfect(); Reposition(); } catch { if (goButton != null) { NGUITools.Destroy(goButton); goButton = null; } throw; } return(goButton); }