徳島ゲーム開発ごっこ 技術ブログ

ゲームを作るために役に立ったり立たなかったりする技術を学んでいきます!

【Unity】僕もPhotonを使いたい #16 警告文を叩き潰せ!

 コード上で警告文が出ていると嫌な気分になります。
 エラーではないため、そのままにしていても動くことが多いです。
 ただ気持ち悪い、とても気持ち悪い!
 中には関数やプロパティを誤った使い方をしているため、警告文が出ていることも多いため、放っておくのは感心しません。

 前回、このプロジェクトのPUNを1.80に更新しました。
 そしたら、出てくる出てくる警告文。

 警告文は消毒だ!


この記事にはUnity5.5.1f1及びPUN1.80を使用しています。

なぜ警告文が……。

 これが、PUNを1.80に更新した後の私のプロジェクトのConsoleウィンドウの様子です。

f:id:urahimono:20170216004355p:plain

 えらいことのなっておる。
 警告文は常に気を付けて、見つけたら消すようにしているのですが突然なぜこんなことに……。

 ただ警告文をよく見てみましょう

Room.playerCount is obsolete:
PhotonPlayer.name is obsolete:
PhotonPlayer.isLocal is obsolete:
...

 obsoleteばかりですね。
 これは関数名やプロパティ名がPUN上で変更された可能性がありますね。
 実際のソースコードを見てみましょう。

f:id:urahimono:20170216004403p:plain

 やっぱり、プロパティ名が変更されています。
 PUNのチェンジログを見る限り。1.80から更新されたようですね。

 それにしても、System.Obsolete内ののコメントが実にいいですね。わかりやすいです。
 どの名前のプロパティに変更すればいいのかが困らないのでとても助かります。

PUN1.80で変わったプロパティ一覧

 さて、折角なのでPUN1.80で変更したプロパティを纏めておきます。
 私が確認した限り、プロパティ名変更を促すSystem.Obsoleteが記述されていたのは以下の三つのファイルです。

  • Room.cs
  • PhotonPlayer.cs
  • RoomInfo.cs

Room.cs

  • name
    Name
  • open
    IsOpen
  • visible
    IsVisible
  • propertiesListedInLobby
    PropertiesListedInLobby
  • autoCleanUp
    AutoCleanUp
  • maxPlayers
    MaxPlayers
  • playerCount
    PlayerCount
  • expectedUsers
    ExpectedUsers
  • masterClientId
    MasterClientId

PhotonPlayer.cs

  • name
    NickName
  • userId
    UserId
  • isLocal
    IsLocal
  • isMasterClient
    IsMasterClient
  • isInactive
    IsInactive
  • customProperties
    CustomProperties
  • allProperties
    AllProperties

RoomInfo.cs

  • customProperties
    CustomProperties
  • name
    Name
  • playerCount
    PlayerCount
  • isLocalClientInside
    IsLocalClientInside
  • maxPlayers
    MaxPlayers
  • open
    IsOpen
  • visible
    IsVisible

 nameからNickNameなど大きな変化のものもありますが、基本Pascal形式に変わったようですね。
 C#の命名規則は私もマイクロソフトの命名規則に乗っ取って使っていますので、コードに一貫性が出て助かります。

https://msdn.microsoft.com/ja-jp/library/ms229043(v=vs.110).aspx

 まあUnityのプロパティ名はcamel形式なので、どっちにしろ完全に一貫性を持つことは難しいのですが……。

まだ警告文との戦いは続く……

 さて、上記の廃止予定のプロパティ名を変更してUnityのConsoleウィンドウから警告文が一掃され綺麗にになりました。
 いやぁ、よかったよかった。

 さあ、これでいい気分でゲーム作りが出来そうです。
 さっそく自分のコードを修正していきましょうか。
 VisualStudioでビルドボタン、ポチっとな。

f:id:urahimono:20170216004450p:plain

 ( д) ゚ ゚

 UnityのConsoleウィンドウから警告文が消えても、VisualStudioではまだ警告文が出ていやがる。
 まあ出ている内容は、warning CS0649warning CS0169だけです。

https://msdn.microsoft.com/ja-jp/library/03b5270t.aspx

https://msdn.microsoft.com/ja-jp/library/x7sk421w.aspx

 PUN内で、フィールド初期化子で初期化していないものや、使われていない変数があるようですね。
 こんな感じです。

f:id:urahimono:20170216004544p:plain

 まあ、特に大きな問題にはならなさそうですし、これは放っておきましょう。
 PUNライブラリ内の警告文ですし、修正したところで、バージョンが上がればまた元に戻ってしまいますしね。
 このぐらいにしておきましょう。

 …。
 ……。
 ………。

f:id:urahimono:20170216004556p:plain

 嘘だけどな!
 警告文は全て消毒だぜ!

 みなさんはほどほどに。