teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

誤字

2019/12/10 02:08

投稿

Enoki_Nameko
Enoki_Nameko

スコア8

title CHANGED
File without changes
body CHANGED
@@ -33,6 +33,7 @@
33
33
 
34
34
  public void Start()
35
35
  {
36
+ DrawButton();
36
37
  StartCoroutine(Coroutine());
37
38
  }
38
39
 

1

コードの追加

2019/12/10 02:08

投稿

Enoki_Nameko
Enoki_Nameko

スコア8

title CHANGED
File without changes
body CHANGED
@@ -9,4 +9,96 @@
9
9
  スキルデータであるスクリプタブルオブジェクトにスキル名を設定し、そのスキル名+Effect等で名前を指定してクラスを呼び出し、そこのEffectコルーチンを使う。というものだったのですが、タイトル以外の方法でも構いません。
10
10
  ただ、余韻を残してダメージ判定したり、連続ダメージの判定できたりするように、コルーチンは使いたいと思っています。
11
11
 
12
- どなたかご教授お願いします。
12
+ どなたかご教授お願いします。
13
+
14
+
15
+ ```
16
+
17
+ using System.Collections;
18
+ using System.Collections.Generic;
19
+ using UnityEngine;
20
+
21
+ public class SceneManager : MonoBehaviour
22
+ {
23
+
24
+ //利用する側のスクリプト
25
+
26
+ public void DrawButton()
27
+ {
28
+ Sprite buttonSprite = Resources.Load<Sprite>("buttonGraphic");
29
+ Vector3 position = new Vector3(0, 0, 0);
30
+ //↓これは自作した指定スプライトを描画するためのものです。一番左の引数はIDになっていて、これを使って参照できるようにしています。
31
+ PictureManager.Instance.DrawPicture(1, position, buttonSprite);
32
+ }
33
+
34
+ public void Start()
35
+ {
36
+ StartCoroutine(Coroutine());
37
+ }
38
+
39
+
40
+ public IEnumerator Coroutine()
41
+ {
42
+ DrawButton();
43
+ while (true)
44
+ {
45
+ yield return null;
46
+ var click = PictureManager.Instance.GetClick(1);//IDを指定して、クリックされたかどうかを取得できるようになっています。
47
+ if(click == 2)
48
+ {
49
+
50
+ //ID1なのでPlayerDataBaseのskills[1]で取得しようと思います。
51
+ Skill skillData = PlayerDataBase.instance.skills[1];
52
+ string className = skillData.skillName + "Effect";
53
+
54
+ //ここでFireBallEffectクラスのCoroutineを呼びたいです。
55
+ yield return className.Coroutine(0,10);//呼び方がよくわからないので適当です。
56
+
57
+ break;
58
+ }
59
+ }
60
+
61
+
62
+ yield break;
63
+ }
64
+
65
+ }
66
+
67
+
68
+ public class PlayerDataBase : MonoBehaviour
69
+ {
70
+
71
+ //プレイヤーはスキルデータとかHPとか色々持ってます。
72
+ public int hp = 100;
73
+ public List<Skill> skills = new List<Skill>() { null, null };//ほんとはどこかでSkillを入れますが割愛。
74
+
75
+ //シングルトン処理(省略)
76
+ public static PlayerDataBase instance;
77
+ }
78
+
79
+ //スキル名を持ったスクリプタブルオブジェクトでスキルデータを管理しています。
80
+ public class Skill : ScriptableObject
81
+ {
82
+
83
+ public string skillName = "";
84
+ public int damage;
85
+
86
+ }
87
+
88
+
89
+
90
+ public class FireBallEffect : MonoBehaviour
91
+ {
92
+ //スキル演出側のスクリプト
93
+ public static IEnumerator Coroutine(int caster, int target)
94
+ {
95
+
96
+ //ここにスキル演出を書きます。ウェイトとか入れたいのでコルーチンです。
97
+
98
+ yield break;
99
+ }
100
+ }
101
+
102
+ ```
103
+
104
+ 色々端折ってますが、こんな感じにしたいです。