Unityで通信してみよう!
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

Unityで通信してみよう!

  • 16,602 views
Uploaded on

2/2に大阪で行われたUnity勉強会のLT枠でプレゼンしたNetworkViewのプレゼン資料です。 ...

2/2に大阪で行われたUnity勉強会のLT枠でプレゼンしたNetworkViewのプレゼン資料です。
実際に動くものがこちら「https://github.com/koppepan/NetworkView」

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
16,602
On Slideshare
16,341
From Embeds
261
Number of Embeds
7

Actions

Shares
Downloads
53
Comments
0
Likes
15

Embeds 261

https://twitter.com 153
http://takeg.hatenadiary.jp 51
http://192.168.1.15 22
https://cybozulive.com 20
https://t.co 12
http://wiki.aether-inc.local 2
http://wiki.aether-inc.jp 1

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. UNITYで通信してみよう!~5分では出来なかったNETWORKVIEW入門~
  • 2. 自己紹介名前 コッペパン所属 HAL大阪ゲーム制作学科3年 ※絶賛就職活動中Twitter @pepa_696使用言語 C/C++,C#Unity歴 約3か月
  • 3. UNITY同士で通信 その1NetworkViewってなんぞや?
  • 4. UNITY同士で通信 その1NetworkViewってなんぞや? Unityのネットワーキングの技術で、 Script、アニメーション、Transform、RigidBody のいずれか一つを同期する仕組み。
  • 5. UNITY同士で通信 その1NetworkViewってなんぞや? Unityのネットワーキングの技術で、 Script、アニメーション、Transform、RigidBody のいずれか一つを同期する仕組み。 リモートプロシージャコール(RPC)でネットワーク上 にあるオブジェクトのメソッドを呼び出すこともでき る。
  • 6. UNITY同士で通信 その1NetworkViewってなんぞや? Unityのネットワーキングの技術で、 Script、アニメーション、Transform、RigidBody のいずれか一つを同期する仕組み。 リモートプロシージャコール(RPC)でネットワーク上 にあるオブジェクトのメソッドを呼び出すこともでき る。 1つのObjectにいくつでもNetworkViewを積むことも可 能。 ※ ネットワークの負荷とかは知らないよ
  • 7. UNITY同士で通信 その2NetworkViewの使い方
  • 8. UNITY同士で通信 その2NetworkViewの使い方 通信したいObjectに NetworkViewを追加する。 (Component->miscellaneous->Network View)
  • 9. UNITY同士で通信 その2NetworkViewの使い方 通信したいObjectに NetworkViewを追加する。 (Component->miscellaneous->Network View) 以上
  • 10. UNITY同士で通信 その2実際に使って見る(準備編)
  • 11. UNITY同士で通信 その2実際に使って見る(準備編) Serverを立てる(host)• Network.InitializeServer(int, int, boolean); • 第1引数 : 接続可能人数 • 第2引数 : 接続を受け入れるポート番号 • 第3引数 : NATのパンチスルー機能を設定 (正直よく分かってないのでfalseで問題なし)
  • 12. UNITY同士で通信 その2実際に使って見る(準備編) Serverを立てる(host)• Network.InitializeServer(int, int, boolean); • 第1引数 : 接続可能人数 • 第2引数 : 接続を受け入れるポート番号 • 第3引数 : NATのパンチスルー機能を設定 (正直よく分かってないのでfalseで問題なし)Serverに接続する(client)• Network.Connect(string, int ); • 第1引数 : hostのIPアドレス • 第2引数 : hostが接続を受け入れているポート番号
  • 13. UNITY同士で通信 その3Objectを生成する
  • 14. UNITY同士で通信 その3Objectを生成する Network.Instantiate( prefab, // オブジェクト Vector3, // 初期位置 Quaternion, // 初期角度 int // グループNo ); ネットワーク内の全てのPCでインスタンス化される。
  • 15. UNITY同士で通信 その4生成する場所
  • 16. UNITY同士で通信 その4生成する場所 Server側• void OnServerInitialized() {} サーバー立ち上げ時に呼ばれるメソッド
  • 17. UNITY同士で通信 その4生成する場所 Server側• void OnServerInitialized() {} サーバー立ち上げ時に呼ばれるメソッドClient側• void OnConnectedToServer() {} サーバーに誰かが接続してきた時に呼ばれるメソッド この辺でNetwork.Instantiateを実行すると良い。
  • 18. UNITY同士で通信 その5切断時の処理
  • 19. UNITY同士で通信 その5切断時の処理 Server側• void OnPlayerDisconnected(NetworkPlayer p) { Network.DestroyPlayerObjects(p); } クライアントが切断されたときに呼ばれるメソッド。 そのクライアントだけをゲーム内から消す。
  • 20. UNITY同士で通信 その5切断時の処理Client側• void OnDisconnectedFromServer() { Application.Quit(); } サーバーに誰かが接続してきた時に呼ばれるメソッド。 簡単なゲームならサーバーが落ちたらクライアントも 落としてしまって良いと思います。
  • 21. UNITY同士で通信 その6カクカクする原因は
  • 22. UNITY同士で通信 その6カクカクする原因は NetworkViewには1秒間に 何回通信するかの設定があるからです。
  • 23. UNITY同士で通信 その6カクカクする原因は NetworkViewには1秒間に 何回通信するかの設定があるからです。 Network.sendRate デフォルトだと15回に設定されています。
  • 24. UNITY同士で通信 その6カクカクする原因は 対策案
  • 25. UNITY同士で通信 その6カクカクする原因は 対策案 1. 位置を中間補正する。
  • 26. UNITY同士で通信 その6カクカクする原因は 対策案 1. 位置を中間補正する。 2. 全力で通信する。
  • 27. UNITY同士で通信 その6カクカクする原因は 対策案 1. 位置を中間補正する。 2. 全力で通信する。 Network.SendRate = 60; とかやると秒間で60回通信します。 ※ネットワークの負荷とかは知らないよ。
  • 28. UNITY同士で通信 その7キャラクターのスクリプトの注意点
  • 29. UNITY同士で通信 その7キャラクターのスクリプトの注意点 networkView.isMine これはスクリプトを実行するオブジェクトが自分かどうか を判断するプロパティ。
  • 30. UNITY同士で通信 その7キャラクターのスクリプトの注意点 networkView.isMine これはスクリプトを実行するオブジェクトが自分かどうか を判断するプロパティ。 if(networkView.isMine == true) { // キャラクター操作 } と、しておかなければ自分以外まで動いてしまいま
  • 31. ご静聴ありがとうございました