2016-04-20 12 views
0

私はUNETを使用する際のエラーで、次の違いを引き起こしているかを把握しようとしているとランニングの違い同じ時間にマルチプレイヤー機能をテストすることができます。私がテストしている機能は、発射物生成/産卵です。私がエディタをホストにし、アプリケーションをクライアントにすると、ホストだけがプロジェクタイルを見ることができます。しかし、私が編集者をクライアントに、アプリケーションをホストにすると、両方のプレイヤーが発射物を見ることができます。UNET:ユニティエディタとアプリケーション

これはodderを取得する場所です。アプリケーションとエディタを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); 
} 

答えて

1

私はそれを理解しました。アクセスする射影プレハブを登録するクラスは、サーバ上にのみ存在するように設定されていました。だから本質的に、クライアントは投射物を作ろうとしましたが、プレハブは見つかりませんでした。しかし、ユニティエディタで実行したときに具体的にどのように機能するのかはっきりしていません...

0

Iの[OK]を最初はcompleltly UNET理解しないが、あなたはここで私はそれをデバッグし、次を試してやったことであると私は同じ問題を持って: 1-ていることを確認します投射プレハブがNetworkManagerスクリプトに追加されました 2 - あなたのコマンドでhasAuthority boolチェックを使用し、真と偽の場合はnetworkspawn insideを使用してください。 3あなたのコマンドからクライアントrpcを呼び出してNetworkSpawnも使用してください 4- NetworkSpawnwithClientAuthority(this.gameobject)を使用 これらが有効かどうか教えてください。 Unity Docsでは、networkSpawn Fromコマンド機能はホストとクライアントの両方で動作するはずですが、常に最初に動作するとは思われませんが、時には動作することもあります。

+0

"hasAuthority boolチェックを使用し、真と偽の場合はnetworkspawnを使用してください。私はそれが偽であるかどうかにかかわらず、それを使用するのですか?それとも真実を言うことを意味しましたか?また、RpcまたはコマンドでNetworkServer.SpawnWithClientAuthority()を使用しますか? – user2975229

+0

trueとfalseの両方で使用します。コマンド機能でspawnwithclientauthorityを使用していない場合は、基本的にすべての組み合わせを試してください – LumbusterTick

関連する問題