/// <summary> /// ShotDataをもとに生成したActionをIteratorにセット or 単発なら実行するメソッド /// </summary> /// <param name="data">発射するShotData</param> public void SetUnityAction(AttackerType attackerType, BarrageData data, GameObject aim = default, GameObject target = default) { if (data == null) { return; } for (int i = 0; i < data.ShotDatas.Count; i++) { if (data.ShotDatas[i] == default || data.BulletDatas[i] == default) { continue; } if (data.ShotDatas[i].ShotType == ShotType.Normal && data.BulletDatas[i].BulletType == BulletType.Funnel) { continue; } var cnt = data.ShotDatas[i].Count; if (cnt > 1) { SetEvent(GetUnityAction(attackerType, data.ShotDatas[i], data.BulletDatas[i], aim, target), data.ShotDatas[i]); } else { GetUnityAction(attackerType, data.ShotDatas[i], data.BulletDatas[i], aim, target)(0.0f); } } }
public override void OnInspectorGUI() { BarrageData data = target as BarrageData; if (folding = EditorGUILayout.Foldout(folding, "BarrageData")) { EditorGUI.indentLevel++; if (Size == -1) { Initialize(); for (int i = data.ShotDatas.Count - 1; i >= 0; i--) { if (data.ShotDatas[i] == default && data.BulletDatas[i] == default) { BothRemoveAt(i); } } Size = EditorGUILayout.IntField("Size", data.ShotDatas.Count); } else { Size = EditorGUILayout.IntField("Size", Size); for (int i = data.ShotDatas.Count - 1; i >= Size; i--) { BothRemoveAt(i); } } // リスト表示 EditorGUILayout.LabelField("ShotData / BulletData"); for (int i = 0; i < Size; i++) { EditorGUILayout.BeginHorizontal(); if (i >= data.ShotDatas.Count || i >= data.BulletDatas.Count) { BothAdd(); } if (data.ShotDatas[i] != default) { data.ShotDatas[i] = EditorGUILayout.ObjectField(data.ShotDatas[i], typeof(ShotData), false, GUILayout.MinWidth(100)) as ShotData; } else { data.ShotDatas[i] = data.ShotDatas[i] = EditorGUILayout.ObjectField(default, typeof(ShotData), false, GUILayout.MinWidth(100)) as ShotData;