1

次の構造を取得しようとしています。

Game.Player.Position.setPos(X,Y,Z)

これは私がこれまでに持っているフレームワークです:

public partial class Game
{
    public class Player
    {
        private class Position
        {
            public float setPos(float X, float Y, float Z)
            {
                //this code not included
            }
        }
    }
}

これは私が欲しいものを正確に与えてくれません。私が取得しようとしているのは次のとおりです。

Player player1 = new Player();
player1.Position.setPos(player1_X, player1_Y, player1_Z);

ただし、player1 を宣言するたびに、取得できる唯一のオプションはネイティブのもの (player1.Equals、player1.GetHashCode、player1.ToString など) です。player1.Position.setPos() などではありません。

これが何と呼ばれているのかわからないので、誰かがこれに関する詳細情報を入手できる場所を知っていれば、それも役立つでしょう.

ありがとう、

4

1 に答える 1

4

あなたは自分のPositionクラスをOKと宣言しました。これがポジションとは何かを説明したものです。あなたが見逃しているのは、Playerクラスのプロパティです-つまり、 a が位置を持つことができると言っていPlayerます:

public partial class Game
{
    public class Player
    {
        public class PositionClass
        {
            public float setPos(float X, float Y, float Z)
            {
                //this code not included
            }
        }

        public PositionClass Position {get; set;}

        public Player() {
            Position = new PositionClass();
        }
    }
}

もう1つのことは、プロパティがクラスのスコープ外に公開するため、Positionクラスを として持つ必要があることです。PublicPlayer

最後に、コンストラクターでプロパティをインスタンス化して、希望どおりに new を宣言した後に直接Position呼び出すことができるようにする必要があります。setPosPlayer

注: 簡潔にするために、VS2010 プロパティ宣言を想定しています。また、あなたのPositionクラスが呼び出されるように変更しました。PositionClassこれは、例の内容を確認できるようにするためです。通常はこれを行うことはありませんが、あまり混乱しないように名前付けに注意してください。

于 2012-10-26T23:58:54.460 に答える