0

UNET を使用しているときに、次のエラーの違いの原因を突き止めようとしています。

マルチプレイヤー機能をテストするために、プロジェクトをエディタとアプリケーション フォームで同時に実行しています。私がテストしている機能は、発射体の作成/スポーンです。エディターをホスト、アプリケーションをクライアントにすると、ホストだけが発射物を見ることができます。ただし、エディターをクライアントに、アプリケーションをホストにすると、両方のプレイヤーが発射物を見ることができます。

これは奇妙なところです.1つのアプリケーションとエディターではなく、2つのアプリケーションで実行するときにどのような組み合わせを使用しても、ホストだけが発射物を見ることができます.

この特定の組み合わせが機能するのはなぜですか?どのようなセットアップでも機能させるにはどうすればよいですか?

スポーン コードは次のとおりです。それが問題かどうかわからない:

[Command]
public void CmdFireProjectile(Quaternion cA, Vector3 tF, string pN) {
    GameObject projPrefab = Projectile.getProjectilePrefab(pN);
    GameObject proj = (GameObject)Instantiate(projPrefab, new Vector3(transform.position.x, transform.position.y + .4f, transform.position.z) + tF, cA);
    proj.GetComponent<Projectile>().setSource(this);
    NetworkServer.Spawn(proj);
}
4

2 に答える 2

1

アクセスする発射体プレハブを登録するクラスは、サーバー上にのみ存在するように設定されていました。基本的に、クライアントは発射物を作成しようとしましたが、プレハブは見つかりませんでした。Unityエディターで実行したときに特に機能した理由はわかりません...

于 2016-04-21T23:04:40.183 に答える
0

まず最初に、Unet を完全には理解していませんが、あなたと同じ問題が発生しました。これをデバッグして次のことを試してみてください: 1- 発射体のプレハブが NetworkManager スクリプトに追加されていることを確認しますtrue と false の場合、networkspawn を内部で確認して使用します。3- Your Command から Client rpc を呼び出し、そこでも NetworkSpawn を使用します 4- NetworkSpawnwithClientAuthority(this.gameobject) を使用します これらが機能したかどうか教えてください。それにもかかわらず、Unity Docs では、networkSpawn From コマンド関数はホストとクライアントの両方で機能するはずですが、最初は機能しないように見えますが、機能することもあります。

于 2016-04-20T06:17:13.430 に答える