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

たのしいUnsafeUtility

mao
September 23, 2019

 たのしいUnsafeUtility

[非公式] Unite Tokyo 2019 Eve2 LT Fes LT登壇資料です
https://connpass.com/event/139403/

※記載しているリンクには直接アクセスできないので、スライド中で記載しているリンクの一部を以下に記載
-----------------------------------------------------------------
▽ 参考/関連リンク

・【Unity】UnsafeUtilityについて纏めてみる
https://qiita.com/mao_/items/fc9b4340b05e7e83c3ff

・【Unity】UnsafeUtility基礎論【入門者向け】
https://qiita.com/pCYSl5EDgo/items/4b5a5e089eabc8f4387d

・Memory Management of C# with Unity Native Collections
https://www.slideshare.net/neuecc/memory-management-of-c-with-unity-native-collections

・unsafe - C# によるプログラミング入門 | ++C++; // 未確認飛行 C
https://ufcpp.net/study/csharp/sp_unsafe.html

・Span Struct
https://docs.microsoft.com/ja-jp/dotnet/api/system.span-1?view=netstandard-2.1

・Span構造体 - C# によるプログラミング入門 | ++C++; // 未確認飛行 C
https://ufcpp.net/study/csharp/resource/span/

・Spanを使うべき5つの理由
https://qiita.com/GlassGrass/items/cea3c6f91413c3582b5f

・xoofx/UnityNuGet
https://github.com/xoofx/UnityNuGet

・Unity で Span とかを使う
https://github.com/ufcpp/UnitySamples/tree/master/SpanUnsafeBuffers

・※ ポインタをNativeArrayに変換する例
https://gist.github.com/mao-test-h/51b4e3f143b10d0dd12a8b1c81721133

・※ NativeArrayの内部実装 (UnityCsReferenceより)
https://github.com/Unity-Technologies/UnityCsReference/blob/master/Runtime/Export/NativeArray/NativeArray.cs

-----------------------------------------------------------------
▽ その他参考リンク

・もなふわすい~とる~む
https://www.showroom-live.com/monaka-007

・もなふわすい~とる~む - プロフィール
https://www.showroom-live.com/room/profile?room_id=223749

・巻乃もなか(時間遡行中) - Twitter
https://twitter.com/monaka_0_0_7

mao

September 23, 2019
Tweet

More Decks by mao

Other Decks in Technology

Transcript

  1. 目次 • このスライドの注意点 • UnsafeUtilityとは? • Tips 集 ◦ 治安を維持する為に

    ◦ Allocatorの違いについて ◦ その他覚えておくと便利な技術
  2. 治安を維持する為に 難しい場合もある... → NativeArray<T>を持つ構造体を   ポインタやNativeArray<T>で持ちたい • 今のモヒカンは非Blittableなので持てない ◦ セーフティ機能の大体は参照型

    ◦ → 故にモヒカンは参照型を含むために非Blittable ※Blittable型とは?簡単に言えばマネージド (C#)とネイティブ(C++)でメモリレイアウトが同じになる型のこと
  3. Allocatorの違いについて 萌えポイントとしてはAllocatorによってリーク時や メモリ不正アクセス時の挙動が変わる様に見受けられた? ※Standaloneビルド/Editor上で確認 Allocator メモリリーク時 メモリ不正アクセス時 Temp 何もなし 何もなし

    TempJob エラー出力 (処理によっては)エラー出力 Persistent 何もなし (処理によっては)クラッシュ ※あくまで自分が確認した範囲の例。例外はあると思うのでご参考までに ...
  4. Allocatorの違いについて 萌えポイントとしてはAllocatorによってリーク時や メモリ不正アクセス時の挙動が変わる様に見受けられた? ※Standaloneビルド/Editor上で確認 Allocator メモリリーク時 メモリ不正アクセス時 Temp 何もなし 何もなし

    TempJob エラー出力 (処理によっては)エラー出力 Persistent 何もなし (処理によっては)クラッシュ ※あくまで自分が確認した範囲の例。例外はあると思うのでご参考までに ...
  5. その他覚えておくと便利な技術 System.Memory<T> • Span<T> • Unityで使うには? ◦ ① .NET Standard

    2.1対応を待つ ◦ ② NuGetから取得 ▪ xoofx/UnityNuGet ※GitHubで検索 ▪ 手動で入れる ※ソースは参考/関連リンク 参照
  6. その他覚えておくと便利な技術 System.Memory<T> 参考 • Span<T> Struct ◦ https://docs.microsoft.com/ja-jp/dotnet/api/system.span-1?view=netstandard-2.1 • Span構造体

    - C# によるプログラミング入門 | ++C++; // 未確認飛行 C ◦ https://ufcpp.net/study/csharp/resource/span/ • Span<T>を使うべき5つの理由 ◦ https://qiita.com/GlassGrass/items/cea3c6f91413c3582b5f
  7. 参考/関連リンク • unsafe - C# によるプログラミング入門 | ++C++; // 未確認飛行

    C ◦ https://ufcpp.net/study/csharp/sp_unsafe.html • Span<T> Struct ◦ https://docs.microsoft.com/ja-jp/dotnet/api/system.span-1?view=netstandard-2.1 • Span構造体 - C# によるプログラミング入門 | ++C++; // 未確認飛行 C ◦ https://ufcpp.net/study/csharp/resource/span/ • Span<T>を使うべき5つの理由 ◦ https://qiita.com/GlassGrass/items/cea3c6f91413c3582b5f
  8. 参考/関連リンク • xoofx/UnityNuGet ◦ https://github.com/xoofx/UnityNuGet • Unity で Span とかを使う

    ◦ https://github.com/ufcpp/UnitySamples/tree/master/SpanUnsafeBuffers ◦ • ※ ポインタをNativeArrayに変換する例 ◦ https://gist.github.com/mao-test-h/51b4e3f143b10d0dd12a8b1c81721133 • ※ NativeArrayの内部実装 (UnityCsReferenceより) ◦ https://github.com/Unity-Technologies/UnityCsReference/blob/master/Runtime/Export/Nativ eArray/NativeArray.cs
  9. 参考リンク • もなふわすい~とる~む ◦ https://www.showroom-live.com/monaka-007 • もなふわすい~とる~む - プロフィール ◦

    https://www.showroom-live.com/room/profile?room_id=223749 • 巻乃もなか(時間遡行中) - Twitter ◦ https://twitter.com/monaka_0_0_7