独自クラス型の引数がActionノードで表示されない
Posted: 2025/01/09 01:22
お世話になっております。
引数に独自classが含まれているメソッドでActionノードを作成すると、その引数だけ表示されない現象に悩まされております。
◆引数となる独自class
◆ノードとして使うLogicクラス
この場合、ThirdPersonCameraDataの引数のみノードで表示されなくなります。
なお、ScriptGeneratorでは引数を正常に認識できており、SerializableなのでBlackboardに設定することも可能です。
引数(Actionノードで左側にある入力口)を表示させるにはどうすればいいのでしょうか。
また、データを扱う上でもっとスマートなやり方があるようでしたらご教授願えれば幸いです。
引数に独自classが含まれているメソッドでActionノードを作成すると、その引数だけ表示されない現象に悩まされております。
◆引数となる独自class
Code: Select all
using System;
using Unity.Cinemachine;
using UnityEngine;
namespace Game.Logic.Camera
{
[Serializable]
public class ThirdPersonCameraData
{
[SerializeField, HideInInspector]
private InputAxis _horizontalLook = new()
{ Range = new Vector2(-180, 180), Wrap = true, Recentering = InputAxis.RecenteringSettings.Default };
[SerializeField, HideInInspector]
private InputAxis _verticalLook = new()
{ Range = new Vector2(-70, 70), Recentering = InputAxis.RecenteringSettings.Default };
public InputAxis GetHorizontalLook() => _horizontalLook;
public void SetHorizontalLook(InputAxis value) => _horizontalLook = value;
public InputAxis GetVerticalLook() => _verticalLook;
public void SetVerticalLook(InputAxis value) => _verticalLook = value;
}
}
◆ノードとして使うLogicクラス
Code: Select all
using UnityEngine;
namespace Game.Logic.Camera
{
public static class ThirdPersonCameraRotater
{
public static void Rotate(ThirdPersonCameraData data, Vector2 axis, float rotationSpeed)
{
var horizontalLook = data.GetHorizontalLook();
var verticalLook = data.GetVerticalLook();
horizontalLook.Value += axis.x * rotationSpeed * Time.deltaTime * 100;
verticalLook.Value += axis.y * rotationSpeed * Time.deltaTime * 100;
horizontalLook.Validate();
verticalLook.Validate();
data.SetHorizontalLook(horizontalLook);
data.SetVerticalLook(verticalLook);
}
public static void Update(ThirdPersonCameraData data, Transform rotateTarget)
{
var horizontalLook = data.GetHorizontalLook();
var verticalLook = data.GetVerticalLook();
var verticalChanged = verticalLook.TrackValueChange();
var horizontalChanged = horizontalLook.TrackValueChange();
verticalLook.UpdateRecentering(Time.deltaTime, verticalChanged);
horizontalLook.UpdateRecentering(Time.deltaTime, horizontalChanged);
rotateTarget.localRotation = Quaternion.Euler(verticalLook.Value, horizontalLook.Value, 0);
data.SetHorizontalLook(horizontalLook);
data.SetVerticalLook(verticalLook);
}
}
}
この場合、ThirdPersonCameraDataの引数のみノードで表示されなくなります。
なお、ScriptGeneratorでは引数を正常に認識できており、SerializableなのでBlackboardに設定することも可能です。
引数(Actionノードで左側にある入力口)を表示させるにはどうすればいいのでしょうか。
また、データを扱う上でもっとスマートなやり方があるようでしたらご教授願えれば幸いです。