質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

解決済

Unity Editor拡張でスクリプトに書いてある関数を指定したい

Take.R5426
Take.R5426

総合スコア0

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

2回答

0評価

0クリップ

471閲覧

投稿2020/03/03 14:05

敵のステータスや攻撃パターンを簡単に設定できるツールを製作しています。
UnityEventを使うと関数を指定できますよね?このように指定できるものを作りたいのですが、スクリプト内の複数の関数を取ってきてList変数に保存しておく方法(関数を変数のように扱う)がわからないので知りたいです。

/// 渦巻き状 /// </summary> /// <returns></returns> private IEnumerator RollingShot() { while (true) { for(float i = 1; i <= 75; i+=0.5f) { for (float j = i; j < 360+i; j +=i) { var bullet1 = E_bullet.GetE_bullet(); bullet1.transform.rotation = Quaternion.Euler(bullet1.transform.rotation.x, bullet1.transform.rotation.y,j); bullet1.transform.position = this.transform.position; bullet1.SetActive(true); yield return new WaitForSeconds(0.01f); } } } } /// <summary> /// ランダム /// </summary> /// <returns></returns> private IEnumerator RandomShot() { while (true) { if (!Target.activeSelf) { StopShot(); } var bullet1 = E_bullet.GetE_bullet(); bullet1.transform.rotation = Quaternion.Euler(bullet1.transform.rotation.x, bullet1.transform.rotation.y, Random.Range(0,360)); bullet1.transform.position = this.transform.position; bullet1.SetActive(true); yield return null; } } /// <summary> /// ホーミング /// </summary> /// <returns></returns> private IEnumerator HomingShot() { Target = GameObject.FindWithTag("player"); while (true) { if (!Target.activeSelf) { StopShot(); } for (int i = 0; i < 2; i++) { for (int j = 0; j < 3; j++) { var bullet1 = E_bullet.GetE_bullet(); PosX = this.transform.position.x - Target.transform.position.x; PosY = this.transform.position.y - Target.transform.position.y; bullet1.transform.rotation = Quaternion.Euler(bullet1.transform.rotation.x, bullet1.transform.rotation.y, -Mathf.Atan2(PosX, PosY) * Mathf.Rad2Deg); bullet1.transform.position = this.transform.position; bullet1.SetActive(true); yield return new WaitForSeconds(0.025f); } yield return new WaitForSeconds(0.05f); } yield return new WaitForSeconds(0.1f); } } /// <summary> /// つむじ /// </summary> /// <returns></returns> private IEnumerator SpecialShot() { while (true) { if (!Target.activeSelf) { StopShot(); } for (int i = 0; i < 360; i += 40) { for(int j = 0; j < 360; j += 90) { var bullet1 = E_bullet.GetE_bullet(); bullet1.transform.rotation = Quaternion.Euler(bullet1.transform.rotation.x, bullet1.transform.rotation.y, j+i); bullet1.transform.position = this.transform.position; bullet1.SetActive(true); yield return null; } yield return new WaitForSeconds(0.05f); } } } /// <summary> /// 円形 /// </summary> /// <returns></returns> private IEnumerator RoundShot() { while (true) { if (!Target.activeSelf) { StopShot(); } for (int i = 2; i < 5; i++) { for (int j = i; j < 360+i; j += 4) { var bullet1 = E_bullet.GetE_bullet(); bullet1.transform.rotation = Quaternion.Euler(bullet1.transform.rotation.x, bullet1.transform.rotation.y, j); bullet1.transform.position = this.transform.position; bullet1.SetActive(true); } yield return new WaitForSeconds(0.2f); } yield return new WaitForSeconds(1.0f); } } 追加予定の攻撃処理、これを変数で扱いたい

using

using System.Collections.Generic; using System.IO; using UnityEngine; using UnityEngine.Events; public class BossInfo : MonoBehaviour { [SerializeField, Tooltip("体力/現在値")] private float m_hp; [SerializeField, Tooltip("体力/最大値")] private float m_hp_max; [SerializeField, Tooltip("ウェーブ数")] private int m_wave; public float hp { get { return m_hp; } set { m_hp = value; } } public float max_hp { get { return m_hp_max; } set { m_hp_max = value; } } public int wave { get {return m_wave; } set { m_wave = value; } } } 敵の情報

using

using System.Collections.Generic; using UnityEngine; using UnityEditor; [CustomEditor(typeof(BossInfo))] public class BossEditor : Editor { public override void OnInspectorGUI() { BossInfo boss = target as BossInfo; EditorGUILayout.BeginVertical(GUI.skin.box); EditorGUILayout.LabelField("ステータス"); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("体力/現在値"); boss.hp = EditorGUILayout.FloatField(boss.hp); if (GUILayout.Button("Reset")) { Debug.Log("Reset"); boss.hp = boss.max_hp; } EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("体力/最大値"); boss.max_hp = EditorGUILayout.FloatField(boss.max_hp); EditorGUILayout.EndHorizontal(); EditorGUILayout.EndVertical(); if( GUILayout.Button("Attck!!")) { boss.hp -= 1; } EditorGUILayout.BeginVertical(GUI.skin.box); EditorGUILayout.LabelField("ウェーブ数"); EditorGUILayout.BeginHorizontal(); boss.wave = EditorGUILayout.IntField(boss.wave); EditorGUILayout.EndHorizontal(); EditorGUILayout.LabelField("攻撃変化"); for (int i = 1; i <= boss.wave; i++) { EditorGUILayout.BeginVertical(GUI.skin.box); EditorGUILayout.LabelField("Wave" + i); //関数またはフォルダから攻撃を選ぶプルダウンを表示 //選ばれたらそれぞれの設定可能パラメータの表示 EditorGUILayout.EndVertical(); } EditorGUILayout.EndVertical(); } } ボスEditor、攻撃を扱いたい部分

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。