Upgrade to Pro — share decks privately, control downloads, hide ads and more …

シリアライズされる名は。

RyotaMurohoshi
December 15, 2018
430

 シリアライズされる名は。

2018/12/15(土)に開催された「お・と・なのUnity LT大会」で発表したプレゼンの資料です。

RyotaMurohoshi

December 15, 2018
Tweet

Transcript

  1. シリアライズされる名は。
    ~C# 7.3使えるし、シリアライズされるときの名前、指定したくない!?~
    @RyotaMurohoshi
    2018/12/15(土) 【年末だよ】Unity お・と・なのLT大会 2018

    View full-size slide

  2. 会場のみなさん!
    Unity Learning Materialsをご覧のみなさん!
    こんにちは!こんばんは!

    View full-size slide

  3. 1人目、「むろほし」です
    よろしくお願いします

    View full-size slide

  4. 「Unity・お・と・なのLT大会」は、お酒を飲みながら
    とがった技術ネタ・今年頑張ったネタ
    オフレコなネタ・つらかったネタ・ただのネタ
    様々なネタでLTをする年末恒例LT大会です

    View full-size slide

  5. 2013年からやってる
    このイベントも今年で6回目!
    今年も緊張してます!

    View full-size slide

  6. 1つだけお願いがあります

    View full-size slide

  7. 拍手とか、相槌とか、笑いとか
    愛のあるヤジ・声援とか!
    リアクションをお願いします

    View full-size slide

  8. それではちょっと
    リアクションの
    練習をしてみましょう!

    View full-size slide

  9. 拍手!!!

    View full-size slide

  10. しんどいこと、大変だったこと、きつかったこと
    2018年もたくさんありましたね
    そんな2018年の年の瀬、最後くらいは
    会場のみんなで楽しく盛り上げていきましょう

    View full-size slide

  11. むろほしの発表本編
    ここから

    View full-size slide

  12. 2018年12月14日
    祝、Unity 2018.3 リリース
    ここ、拍手してくれると嬉しいな!

    View full-size slide

  13. Unity 2018.3と言えば・・・

    View full-size slide

  14. Scripting Upgrade:
    Enabled Roslyn compiler and C# 7.3 when targeting the new
    Scripting Runtime Version.
    Unity2018.3 Release Noteより
    https://unity3d.com/jp/unity/whats-new/unity-2018.3.0

    View full-size slide

  15. Roslyn Compiler そして C# 7.3が
    普通に使えるようになりましたね!
    ここ、拍手してくれると嬉しいな!

    View full-size slide

  16. 突然ですが、あまり目立っていない
    C# 7.3の機能を紹介します!

    View full-size slide

  17. 自動実装プロパティの
    バッキングフィールドに
    属性を指定できるようになった!

    View full-size slide

  18. どういうことだってばよ?

    View full-size slide

  19. プロパティってこれだよね
    フィールドを公開するのでなく、プロパティでフィールドにアクセス!

    View full-size slide

  20. 自動実装プロパティってこれだよね
    自動実装プロパティでより簡潔に!便利!

    View full-size slide

  21. 自動実装プロパティのバッキングフィールドって?

    View full-size slide

  22. 自動実装プロパティのバッキングフィールドって?
    自動実装プロパティを書くと内部的には
    C#のコードからは見えない
    フィールドとアクセッサが生成される

    View full-size slide

  23. 自動実装プロパティのバッキングフィールドって?
    例えば「Level」というプロパティは内部的に
    • __BackingFIeld というフィールド
    • get_Levelというアクセッサメソッド
    • set_Levelというアクセッサメソッド

    View full-size slide

  24. 自動実装プロパティの
    バッキングフィールドに
    属性を指定できるようになった
    って、どういうことかというと・・・

    View full-size slide

  25. C# 7.3以前
    自動実装プロパティのバッキングフィールドに
    属性をつけることはできなかった
    ここで「へぇー」って言ってくれてもいいですよ!

    View full-size slide

  26. C# 7.3から自動実装プロパティのバッキングフィールドに属性を
    つけらえるようになった!
    プロパティで使うバッキングフィールドに属性をつけたいときも、
    自動実装プロパティが使えるように

    View full-size slide

  27. 自動実装プロパティのバッキングフィールドに属性を
    つけられなかった。C# 7.3より前は。
    自動実装プロパティを使わないで普通のプロパティにする必要が!

    View full-size slide

  28. 自動実装プロパティは内部的に
    コードから見えないバッキングフィールドが作られる
    で、C# 7.3からこのバッキングフィールドにこんな感じで
    属性をつけられるようになった!
    ここで「へぇー」って言ってくれてもいいですよ!

    View full-size slide

  29. ここまでC#の話
    ここからUnityの話

    View full-size slide

  30. SerializeField属性って
    あるじゃないですか?

    View full-size slide

  31. こんなコード書くじゃないですか?

    View full-size slide

  32. これよく書きますよね?
    これ長くないですか?
    もっと短く書きたくないですか?
    ここ、「確かに~」みたいなリアクションしてくれると嬉しいな!

    View full-size slide

  33. こんな風に書けたら嬉しくないですか?

    View full-size slide

  34. だけど、これだめなんです(涙)

    View full-size slide

  35. k__BackingField

    View full-size slide

  36. k__BackingField

    View full-size slide

  37. k__BackingField
    バッキングフィールドの名前はこんな感じ
    だからいい感じにシリアライズできない

    View full-size slide

  38. おしい!
    ここ、「あ~」みたいなリアクションしてくれると嬉しいな!

    View full-size slide

  39. 自動実装プロパティのバッキングフィールド
    にSerializeField属性はつけることはできる
    けれどバッキングフィールドの名前を指定できない
    k__BackingFieldとかになる
    だから変な名前でシリアライズされてしまう

    View full-size slide

  40. ちくしょう!
    おしい!!!

    View full-size slide

  41. こんな風に書いて、良い感じにシリアライズしてほしい!
    けれど、それは無理っぽい!

    View full-size slide

  42. ならフィールドが
    シリアライズされる名前を
    指定したい!

    View full-size slide

  43. シリアライズされる名は。
    ~C# 7.3使えるし、シリアライズされるときの名前、指定したくない!?~
    これタイトルです

    View full-size slide

  44. ここまでC#とUnityの、おしかった話
    ここからは、お願いの話

    View full-size slide

  45. Unityでフィールドをシリアライズするときに
    シリアライズする名前を指定できる
    機能がほしい!!!!

    View full-size slide

  46. もしこれがあれば、
    C# 7.3と合わせて

    View full-size slide

  47. こんなコードが・・・

    View full-size slide

  48. こんな風に書けたら嬉しくないですか?

    View full-size slide

  49. こんな風に書けたら嬉しくないですか?

    View full-size slide

  50. ところで・・・

    View full-size slide

  51. Unity Feedback
    Unityに将来実装してほしい機能を要望として投稿することができるやつ
    他の人のアイデアが良いと思ったとき、それに投票することもできる

    View full-size slide

  52. 実はUnity Feedbackにもう建てた!
    https://feedback.unity3d.com/suggestions/feature-that-specifies-serialized-name-not-with-field-name

    View full-size slide

  53. こんな風に書きたい人!
    貴重なフィードバックの1票を
    このフィードバックに投票をお願いします!

    View full-size slide

  54. シリアライズされる名は。
    ~C# 7.3使えるし、シリアライズされるときの名前、指定したくない!?~
    @RyotaMurohoshi
    2018/12/15(土) 【年末だよ】Unity お・と・なのLT大会 2018
    ここ、拍手してくれると嬉しいな!

    View full-size slide