以前に質問したことがありますが、うまく説明できなかったようですので、これがバグのあるパーツクラスのパケットハンドラーのコードです(パケットから情報を受け取り、x、yに格納し、2を受け入れる構造体があります) ushort refなので、オブジェクトを定義すると、送信する変数の値が変更されます)
public class PacketHandler : GUI
{
GameUser role;
public PacketHandler(GameUser who)
{
role = who;
}
ushort Actualx, Actualy;
public PacketHandler(ref ushort x ,ref ushort y)
{
x = Actualx; y = Actualy;
}
public unsafe void HandleServer(byte[] data)
{
.
.
.
case 10010:
{
if (BitConverter.ToUInt16(data, 8) == 1002)
{
Actualx = BitConverter.ToUInt16(data, 24);
Actualy = BitConverter.ToUInt16(data, 26);
}
break;
}
これはパケットから値を取得し、actualxに格納し、実際には、定義しているオブジェクトパラメータにある任意のushortrefにそれらを与える準備をします。
ここに他のクラスがあります
public class ClientBase
{
GameUser role2;
public ClientBase(GameUser role)
{
role2 = role;
Thread T = new Thread(HuntThread) { Name = "Hunt Thread" };
T.Start(this);
}
.
.
.
public void HuntThread(object Sender)
{
ClientBase Client = Sender as ClientBase;
while (true)
{
Monster Target = GetNextkill();
if (Target != null)
{
Thread.Sleep(1000);
ProxyParadise.Network.Packets.PacketHandler getxandy = new ProxyParadise.Network.Packets.PacketHandler(ref X, ref Y);
ProxyParadise.Network.Packets.PacketStructure ps = new ProxyParadise.Network.Packets.PacketStructure();
.
.
.
本当の問題は、xとyでゼロを見つけることです。トレースすると、actualxでゼロを見つけますが、実際には値を取得していると確信しているので、愚かなことをしていると思います。
全体として、このコードで私を助けることができないか、私が何を意味するのか理解できない場合は、スレッドを使用しながら別のクラスから値を取得する適切な方法を教えてください、みんなありがとう、いくつかのmodで私の古い質問を削除してください、私今それをより良い方法で言い換える