/// <summary> /// 歯車メニューにボタンを追加 /// </summary> /// <param name="name">ボタンオブジェクト名。null可</param> /// <param name="plugin">ボタンを追加するプラグイン。アイコンへのマウスオーバー時に名前とバージョンが表示される</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, this, null, GearMenuCallback); /// } /// void GearMenuCallback(GameObject goButton) { /// Debug.LogWarning("GearMenuCallback呼び出し"); /// } /// } /// </code> /// </example> public static GameObject Add(string name, UnityInjector.PluginBase plugin, byte[] pngData, Action <GameObject> action) { var pluginNameAttr = Attribute.GetCustomAttribute(plugin.GetType(), typeof(PluginNameAttribute)) as PluginNameAttribute; var pluginVersionAttr = Attribute.GetCustomAttribute(plugin.GetType(), typeof(PluginVersionAttribute)) as PluginVersionAttribute; string pluginName = (pluginNameAttr == null) ? plugin.Name : pluginNameAttr.Name; string pluginVersion = (pluginVersionAttr == null) ? string.Empty : pluginVersionAttr.Version; string label = string.Format("{0} {1}", pluginName, pluginVersion); return(Add(name, label, pngData, action)); }
/// <summary> /// 歯車メニューにボタンを追加 /// </summary> /// <param name="plugin">ボタンを追加するプラグイン。アイコンへのマウスオーバー時に名前とバージョンが表示される</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(this, null, GearMenuCallback); /// } /// void GearMenuCallback(GameObject goButton) { /// Debug.LogWarning("GearMenuCallback呼び出し"); /// } /// } /// </code> /// </example> public static GameObject Add(UnityInjector.PluginBase plugin, byte[] pngData, Action <GameObject> action) { return(Add(null, plugin, pngData, action)); }