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

F46c97bb74758d481531990654933050?s=47 RyotaMurohoshi
December 15, 2018
260

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

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

F46c97bb74758d481531990654933050?s=128

RyotaMurohoshi

December 15, 2018
Tweet

Transcript

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

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

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

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

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

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

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

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

  9. 拍手!!!

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

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

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

  13. Unity 2018.3と言えば・・・

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  35. <Level>k__BackingField

  36. None
  37. None
  38. <Level>k__BackingField

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

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

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

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

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

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

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

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

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

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

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

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

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

  52. ところで・・・

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

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

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

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