私は、ユニティプロジェクトで学習AIを使用するために(少なくとも今のところ)データを格納するための非常に簡単なクラスを作成しています。私はインスペクタで複数のエージェントを簡単にカスタマイズできるようにしたいが、垂直に積み重ねられたチェックボックスの数によって、プロジェクトのこの部分がインスペクタを支配するようになります。私が単純に1つのセクションにインスペクタの右側の十分な空き領域を利用させることができれば、それはかなり醜いことになります。ユニティインスペクタで変数を水平方向に整列する
私はカスタムのプロパティー・ドロワーとインスペクター・ウインドウについてたくさんのことを読んできましたが、1つの変更で、クラス全体の表示方法を書き直すなど、多くの作業のようです。
は参考のため、ここではクラス自体です。
[System.Serializable]
public class NNInfo
{
public string networkName = "Agent";
[Header("Movement Properties")]
public float movementSpeed = 10f;
public float rotationSpeed = 1f;
[Header("Learning Properties")]
public float learningRate = 0.1f;
public float momentum = 0f;
public Rewards rewardFunc;
public int[] hiddenLayers;
[Header("Other Properties")]
public int maxHealth = 1000;
[Header("Optional Inputs")]
public bool m_PointToNearestBall = false; // input which is 1 while the agent is facing a ball and -1 when facing away
public bool m_DistanceToNearestBall = false; // input which is 1 while the agent is at the ball and -1 when at max possible distance away
public bool m_PointToEndzone = false; // similar to m_PointToNearestBall but for the endzone
public bool m_Position = false; // two inputs which inform the player of its normalized x and y coordinates on the field
public bool m_WhetherHoldingBall = false; // tells the player whether its holding a ball
public bool m_CanSeeHealth = false; // Whether the player can know its own health
[Header("Optional Outputs")]
public bool m_ForwardLeft = false; // turn left and move forward simultaneously
public bool m_ForwardRight = false; // turn right and move forward simultaneously
public bool m_Reverse = false; // move backwards
public bool m_Flip = false; // instantly switch to opposite direction
public bool m_TurnToBall = false; // instantly turn to face nearest ball
public bool m_TurnToLeft = false; // instantly turn to face left side of field
public bool m_Attack = false; // attack a player (or idle if no contact)
}
これは本当にクールなアイデアですが、私はそれが(簡単な方法で)可能ではないと思います。 – byxor
私はこれがSOに属していないと思います。質問はUnity Devツールに関するものであるため、純粋なプログラミングには直接関係しません。これはGame Dev(http://gamedev.stackexchange.com/)に属している必要があります。Unity AnswersのWebサイト(http://answers.unity3d.com/)には記載されていません。 –
を使用して、エディタコードを更新する(または独自の関数を記述する)必要があります。それは非常に困難ではなく、オンラインで多くのチュートリアルがあります。 – Cabrra