chevron_left

メインカテゴリーを選択しなおす

cancel
はなちる
フォロー
住所
未設定
出身
未設定
ブログ村参加

2020/03/05

  • 【Unity】キャッシュされたビルドの成果物を削除してからビルドする方法(BuildOptions.CleanBuildCache)

    はじめに Unity2021.3あたり?からインクリメントビルドが導入されました。 開発中のイテレーションを高速化するために、Unity はインクリメンタルな (増分) ビルドパイプラインを使用しており、アプリケーションの一部が前回のビルド以降に変更された場合のみ再ビルドされます。これには、アセットシリアライゼーション、コードコンパイル、データ圧縮、署名などのビルドステップが含まれます。 docs.unity3d.comしかし以下のような場合においては問題になってしまいます。 一般に、インクリメンタルビルド後に期待した変更がなく、インクリメンタルビルドパイプラインに問題があると考えられる場合は…

  • 【Unity】ビルドパイプラインのプロファイリングを標準機能のみで行う(buildreport.json & chrome://tracing)

    はじめに 今回はビルドパイプラインのプロファイリングについて取り上げたいと思います。Unityでコンパイルプロセスの可視化ツールとして、Compilation Visualizerが有名です。 www.hanachiru-blog.comただ外部ツールなので、導入に少し手間が必要ではあります。またCompilation Visualizerはアセンブリのコンパイル可視化なので、ビルドパイプライン全体の可視化ができる点では今回紹介する手法の方がより広い範囲でプロファイリングすることが可能です。 はじめに 対応バージョン 手順 Beeとは 対応バージョン Unity 2021.2から?(要調査) …

  • 【Unity】AwaitableCompletionSourceを用いて好きなタイミングでAwaitableの結果を確定させる

    はじめに 今回はUnity2023.1から登場したAwaitableに関連した、AwaitableCompletionSourceについて紹介をしたいと思います。www.hanachiru-blog.com 概要 まずは公式ドキュメントに書いてある説明から見てみましょう。 Objects allowing to control completion of an Awaitable object from user code. ユーザーコードからAwaitableオブジェクトの完了を制御することができるオブジェクトです。 docs.unity3d.comTaskで言うところのTaskComple…

  • 【C#】配列のインデックス・範囲の指定方法まとめ

    はじめに C# 8.0からa[^1]やa[1..2]といった記法が使えるようになりました。learn.microsoft.comただ私は未だにこれどこ指しているんだっけとなってしまうので、備忘録的な意味合いも兼ねて一覧としてまとめておきたいと思います。 はじめに インデックスの指定 a[i] a[^i] 範囲の指定 a[i..j] a[i..^j] a[i..] a[..j] a[..^j] a[^i..] a[..] インデックスの指定 最初の要素を0番目(a[0])とし、それ以降1,2,...といった記法でこの記事では統一します。後ろから数えた場合も同様です。紛らわしいですが気をつけてもら…

  • ずっと辞めたかった大学院修士課程を先月修了した話

    その前に この物語は全てフィックションです。自己防衛のために。 はじめに 無事に修論発表・修士論文提出を終え、修了することができました。ずっと辞めたかった大学院だったので、なんとも清々しい気持ちです。これは研究室の同期が言っていた話なのですが、物語を面白くするためには「抑圧と解放」が大切だと言っていました。私の人生もまだ先が長いですが、割と喜劇なのかもしれません。大学院を辞めたかった私ですが、最初からそうだったわけではありません。なんなら最初はポジティブな印象でした。でも在籍しているうちに辞めたくなり、精神的にもおかしくなりかけてしまった。その流れを書き残しておきたいと思います。別に誰かの役に…

  • 【雑記】週一で技術系の動画をYoutubeにあげてみようと考えている話とボエム

    はじめに 久しぶりに雑記記事を書きます。一応このブログは雑記ブログなのですが、最近はほとんど技術系の記事ばかり挙げていて、正直自分でも雑記系の記事の書き方を忘れちゃいました。今回書きたい内容は、Youtubeについてです。 やりたかったこと 気づけば技術ブログを始めてかれこれ5年目とかになってきました。 私の体感的にはまだ数年くらいしか経っていないのですが、そんなに経ってしまったようです。 ちょっとおじさんくさい発言かもですが、年々時間の進むスピードが早くなってきてる気がします。 正直今でも学生じゃなくなるなんて信じられないです。 ネットで軽く調べた感じ、時間が早く進む要因は新しい体験が減るこ…

  • 【Unity】SimpleGraphQL-For-UnityというGraphQLクライアントライブラリを利用してみる

    はじめに 今回はSimpleGraphQL-For-UnityというUnity用のGraphQLクライアントライブラリを紹介しようと思います。 This package attempts to provide a simple API that is able to interact with a GraphQL server. Nothing more, nothing less. No complicated setup.Also, the world could use some more Unity-friendly GraphQL libraries.That being said,…

  • JetBrains Rider2022.3.2で「ReSharper Host Connecting to ReSharper Host...」から進まないときの対処法

    はじめに JetBrains Rider2022.3.2を利用していたら、突然以下のようなエラーが表示されインテリセンスが効かなくなってしまいました。 Connecting to Reshaper Host ReSharper Host Connecting to ReSharper Host... 一応解決できたので備忘録の意味合いもかねて残しておきたいと思います。 はじめに 解決方法 解決方法 メニューバーよりFile -> Invalidate Caches...を選択し、以下にチェックを入れてInvalidate and Restartを押したら直りました。 Clear file sy…

  • 【C#, Unity】ValueTask.AsTaskを利用してValueTask<TResult>からTask<TResult>に変換をする

    はじめに 今回はValueTask.AsTaskメソッドについて紹介をします。learn.microsoft.com はじめに 説明 説明 AsTaskを実行すると以下の挙動になります。 この ValueTask でラップされる Task オブジェクト (存在する場合)、または、結果を表す新しい Task オブジェクト。 ValueTask.AsTask メソッド (System.Threading.Tasks) Microsoft Learn相変わらず公式ドキュメントはカタコトですが、 Taskのインスタンスが存在する(非同期処理)場合はそのままTaskを返す Taskのインスタンスが存…

  • 【Unity】UniTask-Supplementを用いてUniTaskのCancellationTokenを渡す記述を簡素化する

    はじめに 今回はUniTask-SupplementというUniTaskのCancellationTokenを渡す記述をより簡単にしてくれるライブラリについて紹介をしたいと思います。github.com github.com はじめに 導入方法 使い方 基本 新しく実装されたメソッド WhenAnyでCancellationTokenを渡す DoTween関係 導入方法 PackageManagerのAdd package from git url...を選択し、以下の文字列を打ち込みます。 https://github.com/su10/UniTask-Supplement.git#upmP…

  • 【Unity】Unity 2023.1より登場したAwaitableの使い方まとめ(Unity公式版UniTask??)

    はじめに ついにUnity2023.1よりUnity公式版UniTaskが出ました。(結構語弊がありそうだか...)github.comただ現段階ではUniTaskと同等・もしくはそれ以上な機能を持っているわけではなく、軽く触った限りはまだまだAPIが足りず発展途上かなといった感じです。しかし段々と使いやすくなるのは間違いないでしょうし、外部ライブラリをなるべく使いたくない方にとって魅力的なことも確かです。今後利用されるケースも増えるかと思いますので、今のうちから触っておくのも悪くないかと思います。docs.unity3d.comちなみに現段階ではしっかりとしたドキュメントはなさそうです...…

  • 【Unity】有名なGIFサポートライブラリについて比較してみる(UniGif, mgGif, Unity-GifDecoder)

    はじめに 今回は有名なGIFサポートライブラリを比較してみたいと思います。対象ライブラリは以下の3つ。 UniGif mgGif Unity-GifDecoder GitHub - WestHillApps/UniGif: GIF image decoder for Unity. GitHub - gwaredd/mgGif: A unity library to parse GIF files and extract the images as textures GitHub - 3DI70R/Unity-GifDecoder: Gif decoding utility for Unity …

  • 【Unity】GIFをサポートするようにできる「UniGif」というライブラリの使い方

    はじめに 今回はGIFをサポートできるようにするUniGifというライブラリについて取り上げたいと思います。 GIF image decoder for Unity.Decode a GIF file at run time to get the texture list. Supports GIF87a or GIF89a format. (Animation, transparency, interlace, etc)This is made with Unity 5.4.0f3 (Mac, Win, Android, iOS). // DeepL翻訳 Unity 用の GIF 画像デコー…

  • 【Unity】SourceGeneratorを実装してUnityで動作させるまでやってみた(Unity2021.3以上で利用可)

    はじめに Unity2021.3以上からSourceGeneratorを利用することができるようになりました。 ソース ジェネレーターを使用すると、C# の開発者がコンパイル時にユーザー コードを検査できます。 ソース ジェネレーターは、ユーザーのコンパイルに追加される新しい C# のソース ファイルを即座に作成します。 この方法で、コードをコンパイル中に実行することができます。 ソース ジェネレーター Microsoft LearnコンパイルをするときにC#コードを自動生成することができる機能といったところでしょうか。 SourceGeneratorの動作フローソース ジェネレーター …

  • 【Unity】GIFをサポートするようにできる「Unity-GifDecoder」の使い方(Streamを扱えるので便利)

    はじめに 今回はUnity-GifDecoderというUnityでGIFサポートできるライブラリの紹介をしたいと思います。 Custom gif decoder written from scratch, designed for Unity engineThere is no gif decoding library for .net, since GifBitmapDecoder is already included in PresentationCore.dll, but you cant use it in Unity (Since mono doesn't support WPF)…

  • 【Unity】 「ValueTaskSupplement」でValueTaskに対してWhenAny, WhenAllを適応する

    はじめに 今回はValueTaskに対してWhenAny, WhenAll, Lazyを適応できるようにするValueTaskSupplementについて紹介したいと思います。github.comまたLazy(AsyncLazy)に関しては、私自身ちゃんと理解できていなくこの記事には書かないので注意してください。 ちゃんと理解できたらまた別記事で書きたいと思っています。 はじめに テスト環境 依存先 インストール 使い方 テスト環境 Unity2022.22.1f1 ValueTaskSupplement v1.1.0 (2023/2/9時点ではv1.1.0が最新) 依存先 System.Bu…

  • 【C#, Unity】Regex.Matchはインスタンスメソッドを使うとGC.Allocと処理速度の面で有利

    はじめに Regex.Matchには静的メソッドとインスタンスメソッドが存在します。 // 静的メソッド Match match = Regex.Match("An extraordinary day dawns with each new day.", @"\ba\w*\b"); // インスタンスメソッド Match match2 = new Regex(@"\ba\w*\b").Match("An extraordinary day dawns with each new day."); 静的メソッドの仕組みとして、公式ドキュメントには以下のように記載されています。 静的 Match(S…

  • 【Unity】GIFをサポートするようにできる「mgGif」というライブラリの使い方(Imageへの適応例つき)

    はじめに 今回はmgGifというライブラリを紹介したいと思います。 A unity library to parse a GIF file and extracts the images, just for fun // DeepL翻訳 GIF ファイルを解析し、画像を抽出するための Unity ライブラリです。 github.comまた今回実験として利用させていただいたGit画像は以下から借りてきたものです。 http://katus-gifani.sakura.ne.jp/sozai01.html はじめに インストール方法 使い方 コンポーネントとして利用できるようにする Imageに適…

  • 【Unity】コルーチンでタスクをyiled returnしようとすると1フレームだけ待つという罠(UniTask.ToCorouine推奨)

    はじめに コルチーンの中でTaskを待つために以下のようなコードがあったとします。 private IEnumerator SampleCoroutine() { Debug.Log("Start Task"); // 1フレームだけ待つことに注意 yield return SampleAsync(); Debug.Log("EndTask"); } private async Task SampleAsync() { await Task.Delay(TimeSpan.FromSeconds(10)); } 一見ちゃんと動作するように見えますが、実はyield return SampleAs…

  • 【Unity】PackageManagerの表示が崩れてしまう場合の対処法(Mac, Unity2020.3.5f1)

    はじめに MacOSのUnity2020.3.5f1で、PackageManagerを開いたら以下のような表示になっていました。 Package Manager はじめに 解決方法 参考 解決方法 Project SettingsからPlayer/OtherSettings/Graphics APIs for MacにOpenGL Coreを追加して上に設定します。 OpenGL Coreを追加する 参考 Bug - Unity editor windows content texts are broken on MacOS - Unity Forum

  • 【Unity】メールを送ることができるようにする「UniMail」の紹介と使い方(Win, OSX, iOS)

    はじめに 今回はメールを送ることができるようになるUniMailについて紹介したいと思います。github.comまた画像付きでメールを送る機能も実装されているのですが、画像付きはiOSのみ対応なことに注意です。 はじめに 対応プラットフォーム Send email with image Send email without image インストール方法 使い方 画像なしのメールの送り方 画像ありのメールの送り方 対応プラットフォーム Send email with image iOS Send email without image OSX OSX/Editor Windows Window…

  • 【Unity】Easy Save3にAssembly Definitionを定義する

    はじめに Unityのセーブアセットとして、Easy Saveがとても有名です。すごく使い勝手が良く暗号化もしてくれる便利アセットですが、唯一の不満点があります。それはAssembly Definitionが定義されていないということです。大した労力もかからないとは思いますが、全然対応してくれません。(一応v3.5.4になったら対応するよと言ってくれている?のですが、更新されていない模様) Easy Save uses Assembly Definitions from v3.5.4 onwards. If you want to access Easy Save 3 from an asse…

  • 【C#】System.Lazy<T>を用いてスレッドセーフな遅延初期化を行う

    はじめに 今回はSystem.Lazy<T>について取り上げたいと思います。learn.microsoft.com はじめに 概要 使い方 概要 System.Lazy<T>を使うことで、スレッドセーフな遅延初期化をすることができます。 遅延初期化のサポートを提供します。 遅延初期化を使用して、大規模なオブジェクトまたはリソースを集中的に使用するオブジェクトの作成、またはリソースを集中的に使用するタスクの実行を延期します。特に、プログラムの有効期間中にこのような作成または実行が発生しない可能性がある場合。 https://learn.microsoft.com/ja-jp/dotnet/api…

  • 【Unity】UnityのメッシュをフルカラーでMagicaVoxelにエクスポートできる「MagicaVoxel Tools」の紹介と使い方【アセット紹介(2)】

    はじめに 今回はUnityのメッシュをフルカラーでMagicaVoxelにエクスポートできるMagicaVoxel Toolsというアセットについて紹介したいと思います。 ゲームオブジェクトから.voxを生成するサンプルシーン1 はじめに 概要 環境 対応プラットフォーム MagicaVoxelへエクスポート 複数のメッシュを1つのオブジェクトにベイクしてボクセル化 .voxのインポート さいごに 参考 概要 MagicaVoxel Toolsを用いることでUnity上でMagicaVoxelにて利用されるフォーマット.voxへの入出力が可能になります。ephtracy.github.io E…

  • 【Unity】シンプルだが汎用性の高いUIアセット「Simple UI」の紹介と使い方【アセット紹介(1)】

    はじめに 新しい試みとして、私が買ってよかったなと感じたアセットを紹介していくといったアセット紹介シリーズというのをやっていこうと思ってます。最初に紹介するのはSimple UIというUI関連のアセットです。 環境 Simple UI v0.5 対応プラットフォーム Unity 2018.2.13 or higher (Asset Storeには2017.4.21 or higherと記載があるが、PackageManagerには上記) 権利について 商用利用可です。 The contents of this pack can be used within commercial project…

  • 【Unity】DoTweenでUniTaskを対応させてawaitできるようにする

    はじめに 今回はDoTweenとUniTaskを組み合わせる方法について紹介したいと思います。 // DoMoveXをCancellationToken付きでawaitする await gameObject.transform.DOMoveX(10f, 1) .WithCancellation(token); はじめに やり方 参考 やり方 UniTask.DOTweenとアセンブリが分かれており、中身が#if UNITASK_DOTWEEN_SUPPORTのように書かれています。 github.comよって以下の操作を行うことでDoTweenに関連する機能を利用できるようになります。 Pro…

  • Unityの技術ブログを4年半続けてどれくらいPV・収益をあげられたか大公開【2022年】

    はじめに 去年もPV・収益に関する記事を書いたので、今年もやっていこうと思います。www.hanachiru-blog.com はじめに 現状の説明 2020~2022のPV遷移 収益 考察 現状の説明 現状(2023/1/2時点)でこのブログは以下のような状況です。 2018/07/22に記事を初投稿 雑記ブログのつもりだが、ほとんどUnityに関する記事を投稿 投稿数は738記事 週2のペースを目標に投稿 改めてみると、結構書いてますね。 徐々にUnityブロガーとしては古参になってきた説?あるかもしれません。 2020~2022のPV遷移 いつも一年間しか載せてませんでしたが、今回は20…

  • 【Unity】Cysharp製NativeMemoryArrayを利用して、マネージドヒープを利用しない配列を確保する(要素数の制限なし)

    はじめに 今回はNativeMemoryArrayというネイティブメモリを利用した配列を簡単に利用できるようにしたライブラリを紹介したいと思います。 NativeMemoryArray is a native-memory backed array for .NET and Unity. The array size of C# is limited to maximum index of 0x7FFFFFC7(2,147,483,591), Array.MaxLength. In terms of bytes[], it is about 2GB. This is very cheep in…

  • 【Unity】並べ替え可能なランダムIDジェネレーターである「Cysharp製Ulid」の利用法(Guid.NewGuidより高速,生成時刻によるソート可)

    はじめに 今回はCysharp/Ulidという.NET CoreやUnityのためのランダムIDジェネレーターを紹介したいと思います。 Fast C# Implementation of ULID for .NET Core and Unity. Ulid is sortable, random id generator. This project aims performance by fastest binary serializer(MessagePack-CSharp) technology. It achives faster generate than Guid.NewGuid. …

  • 【Unity】ZStringを導入してマネージドヒープへのアロケーションを削減する

    はじめに 今回はZStringという文字列生成におけるGC.Allocをゼロにするライブラリについて紹介したいと思います。 今回、文字列生成におけるメモリアロケーションをゼロにする「ZString」というライブラリを公開しました。 ZString – Unity/.NET CoreにおけるゼロアロケーションのC#文字列生成 Cygames Engineers' Blog github.com触った感じ特に大きなデメリットもなさそうですし、積極的に導入して良いライブラリかもしれません。 はじめに 環境 対応バージョン 導入 unitypackageの利用 packagemanager(man…

  • 【Unity】エディタ拡張でメニューバーにチェックを付ける(Menu.SetChecked)

    はじめに 今回はエディタ拡張でメニューバーにチェックを付ける方法について紹介したいと思います。 Menu.SetCheckedの利用例docs.unity.cn docs.unity3d.com はじめに やり方 エディタ起動時に前回の情報を読み込む エディタの起動時のみ処理を行う 初期化の処理を遅らせる データをストレージに書き込む やり方 Menu.SetCheckedメソッドを利用することで、MenuItemのチェックマーク状態を設定できます。 public static void SetChecked(string menuPath, bool isChecked); public s…

  • 2022年を振り返り、大学院生TRPGやSwitchリリース、アプリリリースなど

    はじめに 2022年も今日で終わり。毎年振り返り記事を書いていたので、今年もやっていきます。www.hanachiru-blog.com はじめに 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月 さいごに 1月 Switchでリリースしたクローズドサークルからの脱出を有名な実況者であるFOS ホワイトさんに実況してもらえました。 クローズドサークルからの脱出 ダウンロード版 My Nintendo Store(マイニンテンドーストア)今日の動画。人が次々に殺されていく脱出ゲームでございます。夢中で遊んでたら完全クリアしてました。最近投稿ツイートが遅いのは生活リ…

  • 【Unity】アセットが変更時にアセットの自動更新をしないようにする(自動コンパイル無効化, Auto Refresh)

    はじめに 今回はスクリプトが変更されたときに自動でコンパイルがされないようにする方法について紹介をしたいと思います。docs.unity3d.com はじめに Auto Refresh 再生時にコンパイルを行う Auto Refresh Preferences/Asset Pipline/Auto Refresh(Unity2021.3以前?はPreferences/General/Auto Refresh)をオフにすることで、アセットが変更されたときにアセットの自動更新を行わないようにすることができます。デフォルトはオンです。 これを有効にすると、アセットが変更されたときに、アセットの自動更…

  • 【Unity】「Unable to find player assembly: Library/PlayerScriptAssemblies/UnityEngine.TestRunner.dll」というエラーの対処法(Burstのバージョンによるエラー)

    はじめに プロジェクトをビルドしようとしたところ、以下のようなエラーが出てきてしまいました。 Unable to find player assembly: Library/PlayerScriptAssemblies/UnityEngine.TestRunner.dll UnityEngine.Debug:LogWarning (object) Unity.Burst.Editor.BurstAotCompiler:OnPostBuildPlayerScriptDLLsImpl (Unity.Burst.Editor.BurstAotCompiler/BurstAOTSettings,Uni…

  • 【Unity】Fullscreen ShaderGraphというShaderGraphでフルスクリーンエフェクトが作れる機能が実装された(Unity2022.2以降)

    はじめに Youtubeの公式チャンネルにkeifiro神が以下の動画をあげていました。www.youtube.com動画も4分くらいなので正直そちらを見た方が良いかと思いますが、Fullscreen ShaderGraphについてブログにまとめておきます。あとURPとHDRPに対応していますが、この記事ではURPのみ取り上げます。 Fullscreen ShaderGraphを利用した例 はじめに 環境 やり方 Fullscreen ShaderGraphの作成 Universal Renderer assetにFull Screen Pass Renderer Featureを設定 Ful…

  • 【Unity】NativeArray<T>からSpan<T>へ変換する方法(2022.2以前はunsafe, 2022.2以降はAsSpan)

    はじめに 今回はNativeArray<T>からSpan<T>への変換方法を紹介したいと思います。docs.unity3d.com はじめに 環境 2022.2以前 2022.2以降 環境 Unity2022.2.0b16 2022.2以前 unsafeを利用する必要があります。 private unsafe void Start() { // NativeArrayの生成 NativeArray<byte> nativeArray = new NativeArray<byte>(100, Allocator.Temp); Span<byte> span = new Span<byte>(na…

  • 【Unity】Scripted Importerを使ってUnityが対応していない拡張子のファイルに対応する(テキスト暗号化も)

    はじめに 今回はScripted Importerについて紹介したいと思います。 Scripted Importer は Unity スクリプティング API の一部です。Scripted Importer を使用すると C# でカスタムアセットインポーターを作成できます。これにより、Unity でネイティブにサポートされていないファイル形式の独自のサポートを加えることができます。 Scripted Importer - Unity マニュアルyoutu.be はじめに やり方 MainAssetとSubAsset TextAssetの暗号化1(これは間違った手法) TextAssetの暗号化…

  • 【Unity】asmdefのVersion Definesを利用して特定のパッケージ(の特定バージョン)がある場合にのみシンボル定義を行う

    はじめに 今回はasmdefのVersion Definesについて取り上げたいと思います。 Version Definesdocs.unity3d.com はじめに 概要 バージョン指定の式の書き方 以上 以上・以下 より大きい・より小さい 等しい 概要 Version Definesを用いることで特定のパッケージ(かつ特定バージョン)がある場合にのみシンボル定義を行うことができます。 If you need to compile different code in an assembly according to whether a project uses specific versio…

  • 【Unity】Compilation Visualizer for Unityを用いてアセンブリのコンパイルプロセスを可視化する

    はじめに 今回はCompilation Visualizerというアセンブリのコンパイルプロセスを可視化することができるツールを紹介したいと思います。github.com 概要 Compilation Visualizerはアセンブリのコンパイルプロセスを可視化するツールです。 具体的に以下のような用途が考えられます。 どのアセンブリにどれくらいコンパイルの時間がかかっているか調べる アセンブリ間の依存関係を調べる This tool visualizes the assembly compilation process in Unity3D. It hooks into the Editor…

  • 【Unity】LocalizationのStringTableCollectionを一括でCSVに出力するエディタ拡張を作った

    はじめに Localizationで利用している大量のStringTableCollectionをCSVに出力してほしいとの要望があったのですが、一々LocalizationTablesWindowをいじってCSVに出力するのはかなり辛そうだと思いました。 LocalizationTablesWindowぱっと調べてみたところUnityEditor.Localization.Plugins.CSV.Csvというクラスがpublicで公開されていたので、これを弄れば自動化できそうだと思いやってみたら結構簡単にいけました。 docs.unity3d.comこちらを今回は紹介したいと思います。 はじ…

  • 【Unity】スクリプトでプロジェクト内の特定のScriptableObjectを取得するやり方(Editor拡張で便利)

    はじめに 今回はProject内(Assets/以下)に含まれているScriptableObjectを探す方法を紹介したいと思います。 はじめに やり方 やり方 以下の3つのメソッドを利用します。 メソッド 意味 AssetDatabase.FindAssets t:〇〇とすると特定のtypeのアセットのGUID一覧を取得できる AssetDatabase.GUIDToAssetPath GUIDからアセットパスに変換をする AssetDatabase.LoadAssetAtPath アセットパスからObjectを取得する AssetDatabase-FindAssets - Unity スク…

  • 【Unity】asmdefのDefine Constraintsを利用して特定のシンボルが定義されているときのみアセンブリを含める

    はじめに 今回はasmdefのDefine Constraintsについて取り上げたいと思います。 Define Constraints はじめに 概要 設定の仕方 シンボル定義について Define Constraintsの書き方 複数の記述 シンボルが未定義 または 概要 Define Constraintsは特定のシンボルが定義されているときのみアセンブリを含めるようにすることができます。 Define Constraints は、Unity がアセンブリをコンパイルまたは参照するために定義しなければならないコンパイラーの #define ディレクティブを指定します。Unity は、De…

  • Vue.js+GitHub+CloudFlare Pagesで無料でサイトを公開する

    はじめに Webサイトを新しく公開しようということで色々と調べたところ、なるべく簡単かつ無料でやろうと思い以下を採用しました。 Vue.js GitHub CloudFlare Pages イメージ図一度環境構築さえ出来てしまえば、GitHubの特定ブランチを更新すればサイトが自動更新されるのでかなり使い勝手は良いと思います。その環境構築も楽なのが本当に嬉しいですね。久々にWeb系を触ったので、メモがてらにどんな作業をしたのか書き残しておきたいと思います。技術技術しているというよりかは、どっちかというと息抜き回ですね。 はじめに Vue.jsを用いたサイト作成 GitHubへアップロード Cl…

  • 【Unity】Unity Test Framework v1.3からUniTaskを使わなくても簡単に非同期処理のテストができるようになった

    はじめに Unity Test Framework(旧:Unity Test Runner)で非同期のテストをしようとすると以下のように書く事が主流?でした。 [UnityTest] public IEnumerator DelayIgnore() => UniTask.ToCoroutine(async () => { var time = Time.realtimeSinceStartup; Time.timeScale = 0.5f; try { await UniTask.Delay(TimeSpan.FromSeconds(3), ignoreTimeScale: true); va…

  • 【Unity】Assembly Definition Referenceを用いて特定アセンブリにフォルダ以下のスクリプトを含める(asmdefによるファイル配置の制約に有効)

    はじめに 今回はAssembly Definition Referenceについて紹介をしたいと思います。 Assembly Definition References The scripts in the folder containing the Assembly Definition Reference asset, including scripts in any child folders (unless those folders contain their own Assembly Definition or Reference assets) are compiled into…

  • 【C#】非同期using(await using)を利用してIAsyncDisposableインターフェイスを実装するオブジェクトの破棄・解放処理を実行する

    はじめに 今回は非同期using(await using)について紹介したいと思います。learn.microsoft.com はじめに 概要 必ずIAsyncDisposableを実装する必要はない IDisposableとIAsyncDisposable 概要 IAsyncDisposableを実装しているオブジェクトに対して、await usingを利用することで非同期な破棄処理を書くことができます。 private static async Task Sample() { // 1 -> 2 -> 3 await using (var exampleAsyncDisposable = …

  • 【Unity】EditorUtility.Open〇〇とEditorUtility.Save〇〇を用いてファイル・フォルダ選択パネルを利用する

    はじめに 今回はファイル・フォルダ選択パネルに関係する6つのメソッドについて紹介をしたいと思います。 EditorUtility.OpenFolderPanel EditorUtility.OpenFilePanel EditorUtility.OpenFilePanelWithFilters EditorUtility.SaveFolderPanel EditorUtility.SaveFilePanel EditorUtility.SaveFilePanelInProject EditorUtility-OpenFolderPanel - Unity スクリプトリファレンス EditorU…

  • 【C#, Unity】C#7.0から導入された「ValueTask<TResult>」を利用してヒープアロケーションを減らしたかった(実験付き)

    はじめに 今回はC#7.0より導入されたValueTask<TResult>について取り上げたいと思います。 learn.microsoft.comまずValueTask<TResult>の説明の前に、Task<TResult>を利用した非同期処理には以下のような問題点が指摘されていました。 非同期メソッドでも同期処理になる場合が多い Taskはclassなのでnewの度にManaged HeapにAllocationが発生する 同期処理の時はTaskを生成しないようにしたい(完了済みのTaskが生成されてしまう) これらを解決するために登場したのがValueTask<TResult>で、以下…

  • 【Unitty】Tensorflow Liteを利用してUnityで機械学習の推論を行う(tf-lite-unity-sampleを利用)

    はじめに Unity SYNCを見ていたところ、以下の講演にて面白い事を話されていました。youtu.be 初手Tensorflow Lite(以下 TFlite)でCPU推論がお勧め。理由は以下。 ONNXRuntimeやBarracudaと比較して多くのケースで推論が最速 私もONNXRuntimeやBarracudaを利用したことがあるのですが、Tensorflow Liteがそんなに早いとは知りませんでした。というかどの推論ライブラリを利用するか選定していたときに完全に見落としていて、やってしまったなという感じですね。導入も簡単そうなので、実際にTensorflow Liteをお試しで…

  • 【C#】「"Year, Month, and Day parameters describe an un-representable DateTime."」というエラーが出てきた時の対処法

    はじめに 以下のようなエラーに遭遇しました。 "Year, Month, and Day parameters describe an un-representable DateTime." // Google翻訳 「Year、Month、および Day パラメータは、表現できない DateTime を記述しています。」 その対処法をメモしておきます。 対処法 エラーの文章の通り、表現できないようなDateTimeを記述しているのが原因です。 // 4/30までしかない new DateTime(year: 2021,month: 4, day: 31); 特にコンストラクタあたりは気をつけま…

  • 【C#】C#8.0から追加されたIAsyncEnumerableを使って非同期ストリームを実装する

    はじめに 恥ずかしながら最近になってやっとIAsyncEnumerableというものを知りました。 learn.microsoft.com ufcpp.net これは非同期ストリームと呼ばれるもので、ざっくり言うとasync/awaitとyieldが共存できるようになったというイメージでしょうか。C#8.0より追加されたそうです。またよくReactive Extensions(Rx)とAsync Streams(非同期ストリーム)の使い所の違いについて議論されているようですね。 www.infoq.com簡単にではありますが、使い方について記述しておきます。 はじめに 使い方 内部構造 使い方…

  • 【Unity】「OggVorbisEncoder」を用いてWavファイルからOggファイルに変換を行う

    はじめに 今回はOggVorbisEncoderというライブラリを用いたWavからOggへのファイル変換の仕方について紹介したいと思います。github.com一応Macでの動作確認はできたので、Windowsでもいけると思います。(是非調べてみてください) はじめに 概要 インストール コード Wavファイルから情報を抜き取る Oggへ変換する 利用するサンプルコード 概要 A .NET Core Ogg Vorbis audio encoding library written entirely in managed code. .NET Core Ogg Vorbis オーディオエンコー…

  • 【Unity】GarbageCollectorクラスでガベージコレクションのオンオフなどを制御する

    はじめに 今回はGarbageCollectorクラスを用いてガベージコレクションのオン・オフなどを制御してみようという記事になります。 docs.unity3d.com はじめに ガベージコレクションを発生させないようにする GCModeの変更された時に処理を挟む インクリメンタルガベージコレクションが有効かどうか調べる インクリメンタルガベージコレクションを手動実行する インクリメンタルガベージコレクションの1Stepに制限時間を設ける ガベージコレクションを発生させないようにする GarbageCollecor.GCModeを変更することによってガベージコレクションを発生させる・させない…

  • 【Go言語】暇なので公式ドキュメントを見ながらGo言語を入門してみた(Hello, WorldからREST APIまで)

    はじめに 今回はGo言語を入門してみるという記事になります。一応簡単なREST APIを実装するあたりまでは書いていきたいと思ってはいます。またあくまで私の備忘録的な意味合いで記述していくので、ちゃんと学びたい方は公式ドキュメントを見るのが一番です。go.devgithub.com はじめに インストール インストーラーのダウンロード インストール Hello, Worldをしてみる go.modについて go.modを生成する hello.goを作成&記述する コードを実行する パッケージの利用方法を知る pkg.go.devページを開き利用したいパッケージを探す コードに記述する コードを…

  • 【C#】「ConfuserEx2」を用いてコードを難読化をする(Windows,プリセット毎の実験結果付き)

    はじめに 今回はConfuserEx2という.NETアプリケーションのためのオープンソースな難読化ツールを紹介したいと思います。mkaring.github.ioまた公式ドキュメントは以下にあります。 github.com はじめに 概要 サポート 実験環境 ダウンロード 下準備 使い方 ConfuserEx.exeを起動する Projectタブを選択&Dllをドラッグアンドドロップ Settingsタブに移動&ルールを追加する Protect!タブに移動&実行する 出力結果の確認をする None Minimum Normal Aggressive Maximum さいごに 概要 Confus…

  • 【Unity, C#】ライブラリを用いずエクセルファイル「.xlsx」の中身から要素を取得する(Zip展開)

    はじめに 今回はエクセルのファイル(.xlsx)からライブラリを用いずに中身を調べる手法について紹介をしたいと思います。Unityでエクセルのデータを扱おうとすると、NPOIというライブラリを導入することが多いようですね。 www.nuget.org github.comただ最近.xlsxはただの.zipファイルだよということを知りまして、面白そうなので自分でもやってみようかなと思いました。思ったより簡単にできたので紹介します。 はじめに .xlsxについて C#で要素の一覧を取得する どのセルの要素かを調べる 補足 .xlsxについて .xlsxは.zipで圧縮されており、展開するとxml等…

  • 【Unity】公式パッケージ「Editor Coroutines」を利用してエディタ内でCoroutineを扱う事ができるようにする(内部実装で説明)

    はじめに 今回は公式パッケージであるEditor Coroutinesについて紹介をしたいと思います。docs.unity3d.com 概要 Editor Coroutinesはエディタ内でCoroutineを扱う事ができるようにした公式パッケージです。 The Editor Coroutines package allows the user to start the execution of iterator methods within the Editor similar to how we handle Coroutines inside MonoBehaviour scripts …

  • 【Unity】Profiler.BeginSampleとProfiler.EndSampleを用いてコードの一部をプロファイリングする

    はじめに 今回はProfilerクラスのメソッドであるBeginSampleとEndSampleについて紹介したいと思います。 はじめに 概要 補足 概要 まずは公式ドキュメントの説明を載せます。 // Profiler.BeginSample カスタムラベルの付いたコードの一部のプロファイリングを開始します Profiling.Profiler-BeginSample - Unity スクリプトリファレンス // Profiler.EndSample カスタムラベルの付いたコードの一部のプロファイリングを終了しますこれは Profiler ヒエラルキーに表示されます。 Profiling.P…

  • 【Unity】Physics.RaycastAllではなくPhysics.RaycastNonAllocを利用してGC.Allocを防ぐ(実験結果付き)

    はじめに 今回はPhysics.RaycastAllとPhysics.RaycastNonAllocの違いについて紹介したいと思います。docs.unity3d.comdocs.unity3d.com はじめに 概要 違い 実験 注意点 概要 Physics.RaycastAllとPhysics.RaycastNonAllocはどちらもRayを飛ばしてぶつかったゲームオブジェクトを返します。 // オーバーロードが複数あるが、その内一個 public static RaycastHit[] RaycastAll (Vector3 origin, Vector3 direction, float…

  • 【Unity】エディタ上でスクリプトからAudioClipを再生する(Unity 2020.2からPlayClip -> PlayPreviewClipになったので注意)

    はじめに 今回はエディタ上でスクリプトからAudioClipを再生する方法を書きたいと思います。具体的な利用場面は、EditorWindow内でボタンを押したら音声を出力したいといった場合とかですかね。 はじめに 概要 やり方 補足 概要 エディタ上で音声を再生するAPIはUnityは公式で用意してくれていません。ただUnityEditor.AudioUtil.dllに含まれるAudioUtilクラスをリフレクションを用いて利用することで音声を流す事ができます。 github.com内部実装はc++で記述されているので見る事はできませんが、そのC#ラッパーはUnityCsReferenceより…

  • 【Unity】NAudioを導入して、WAVEファイルをMP3ファイルに変換する(Windowsのみ動作確認,Macではダメだった)

    はじめに 今回はNAudioというライブラリを導入して.wavから.mp3に変換したいと思います。また先に結論を言うと、WindowsではできましたがMacでは(私の調べた範囲で)できていません。 はじめに NAudioとは 環境 インストール WAVからMP3に変換する Macで動くか検証してみる 補足 NAudioとは NAudio is an open source audio API for .NET written in C# by Mark Heath, with contributions from many other developers. It is intended to…

  • Steamでストアプレゼンスの"近日登場として投稿..."ボタンが押せないバグの原因は「Standard Packages」らしい

    はじめに Steamのストアページを公開する際に以下のステップを踏みます。 準備: ストアページを近日登場として掲載するには、まず新しいアプリケーションを作成し、リリースのチェックリストにある項目を完了し、Valveによるページのレビューと承認を受ける必要があります。 そのためには、Steamworksダッシュボード上で「新規アプリを作成...」をクリックし、製品のランディングページのチェックリストに従ってください。 ストアページを公開する前に、「ストアプレゼンス」セクション内で必要とされるすべての情報が必要です。 レビューを受ける: チェックリストを完了したら、製品のランディングページ上部の…

  • 【Unity】ScriptableObjectをテキスト形式ではなくバイナリ形式で保存する(PreferBinarySerialization)

    はじめに 今回はPreferBinarySerializationという属性(Attribute)について紹介したいと思います。docs.unity3d.com はじめに PreferBinarySerializationとは? メリット デメリット 補足 PreferBinarySerializationとは? PreferBinarySerializationをScriptableObjectの派生クラスに適応することで、ScriptableObjectをバイナリとして保存することができます。 docs.unity3d.com [CreateAssetMenu] [PreferBinary…

  • 【GitHub Actions】GitHub Actions初心者が公式ドキュメントを見ながら理解を深めていったメモ①

    はじめに 今までGitHub Actionをまともに使ったことがなかった私ですが、そろそろ学んでいこうと思い公式ドキュメントを見ながら勉強し出しました。https://docs.github.com/ja/actions/quickstartdocs.github.comそこで学んだことをメモしておきます。 はじめに 初めてのGitHub Action GitHub Actionsの利用 結果の確認 GitHubActionsとは(用語整理) GitHub Actions workflow イベント ジョブ Actions ランナー ワークフローファイルを理解する name: on: 複数イベ…

  • 【Unity】Physics.autoSimulationを用いて物理演算のシミュレートのオン・オフを切り替える

    はじめに 今回はPhysics.autoSimulationを利用して物理演算のシミュレートのオン・オフを切り替えるという記事になります。 Physics.autoSimulationの動作 はじめに Physics.autoSimulationとは? もっと詳しく 手動で物理演算をシミュレートする Physics.autoSimulationとは? UnityEngine.Physicsクラスのstatic変数であるautoSimulationを切り替える事で物理演算のシミュレートのオン・オフを切り替えられます。 docs.unity3d.com private void Start() {…

  • 【Unity】stackallocを用いる事でGC.Allocを発生せずに配列を確保する

    はじめに 今回はUnityでのstackallocの使用を想定して、簡単な説明記事を書きたいと思います。 はじめに メモリ領域について stackallocとは stackallocの利用 stackalloc利用の注意点 Spanの注意点 おまけ メモリ領域について Unityでは以下の大きく分けて3つのメモリ領域があります。 マネージメモリ: マネージヒープと ガベージコレクター を使用する制御されたメモリレイヤー。自動的にメモリ割り当てを行います。 C# アンマネージメモリ: Unity Collections 名前空間およびパッケージと組み合わせて使用できる、メモリ管理のレイヤーです。…

  • 【Unity】Burst Direct CallでXor Shiftを活用したノイズを作ろうとしたら失敗した話

    はじめに 今回はBurst Direct Callを触って、簡単な計測をしてみたという記事になります。www.youtube.com公式のYoutube動画でBurst Direct Callの紹介動画があったので、自分でも触ってみようかなと思った次第です。結果としてあんまり良い結果が得られなかったのですが、備忘録として残しておきます。 はじめに 概要 環境 インストール XorShift 実装 エディタ上での結果 StandaloneOSXで実験 さいごに 参考 概要 Burst 1.5 の新機能のうち特筆するべきものに、Direct Call(直接呼び出し)と呼ばれるものがあります。Bur…

  • 【C#】Span<T>とString.Substringでどれくらい速度差が出てくるのか調べてみる

    はじめに 今回はSpan<T>とString.Substringでどれくらい速度差が出てくるのか調べてみる記事になります。 https://docs.microsoft.com/ja-jp/dotnet/api/system.span-1?view=net-6.0 String.Substring メソッド (System) Microsoft Docs一応公式ドキュメントにSpan<T>とSliceという項目があり、以下のように書かれています。 Spanには、現在のスパンより、指定したインデックスから始まるスライスを形成するSliceメソッドの 2 つのオーバー ロードが含まれています。…

  • 【Unity】「AudioMixerのVolume(dB, -80~0)←→SliderのValue(0~1のfloat)」の相互変換コード

    はじめに AudioMixerのVolumeをスライダーを用いて変更したいと思った際、Volumeは-80~0の範囲でSliderは0~1の値と少し厄介でした。 AudioMixerdocs.unity3d.comそれらの変換方法について紹介をしたいと思います。 はじめに 変換方法 変換方法 volumeをスライダーの値、dBをAudioMixerのVolumeだとすると以下の式で表せます。 音の大きさ・dBデシベル・音圧・A特性とは?Excel計算式・距離・合成和 – 私は何から出来ているのか? これをコードにするとこんな感じ。 public static float ConvertVolu…

  • 【Unity】AudioClipからWAVEファイルを生成する

    はじめに 前回WAVEファイルからAudioClipを動的に生成する記事を書きました。www.hanachiru-blog.com今回はその逆でAudioCliipからWAVEファイルを作ってみたいと思います。 はじめに WAVEファイルの形式 AudioClipとの対応 コード WAVEファイルの形式 前述の記事でもWAVEファイルの仕組みを書いたのですが、今回はWAVEファイルを作る側なので一番シンプルな基本形だけ抑えておけばOKだと思います。 WAVEファイルの構造Microsoft WAVE soundfile format 開始アドレス byte データ内容 0 4 "RIFF" 4…

  • 【Unity】UTFで「UNITY_INCLUDE_TESTS」があると通常のビルドにはテストコードが含まれないようになっているらしい

    はじめに Unity Test Framework(UTF)のPlayModeを利用していたとき、実機ビルドしたときにコードが含まれちゃうんじゃないかと不安になってしまいました。 docs.unity3d.com 対応プラットフォーム結果的に含まないっぽいですが、一応実験をしてみました。 はじめに 対処法 実験 UNITY_INCLUDE_TESTSあり UNITY_INCLUDE_TESTSなし 対処法 UNITY_INCLUDE_TESTS こちらを対象asmdefのDefine Constraintsに含めてあげればOKです。 Define ConstraintsにUNITY_INCLU…

  • 【Unity】Unity2022を起動したときに「To run this application, you must install missing frameworks for .NET.」というエラーが出てきた時の対処法

    はじめに Unity2022をインストールして起動しようとしたところ、以下のようなエラーが出てきました。 To run this application, you must install missing frameworks for .NET.Would you like to download it now? エラー対処法をメモしておきます。 対処法 以下のサイトを開き、Windowsの場合はコンソールアプリ・デスクトップアプリを実行するをインストールすれば大丈夫でした。dotnet.microsoft.com一応最初はリンクに飛んだのですが、それ以降はメッセージしか出てこなかったので要注…

  • 【Unity】「InvalidOperationException: You are trying to read Input using the UnityEngine.Input class, but you have switched active Input handling to Input System package in Player Settings.」というエラーの対処法

    はじめに 以下のようなエラーが出てきたので、対処法をメモしておきます。 InvalidOperationException: You are trying to read Input using the UnityEngine.Input class, but you have switched active Input handling to Input System package in Player Settings. 対処法 新しいInputSystemが導入されているのに、古いInputManagerを使っているのでこのエラーが出てきます。古いInputManagerに戻すにはPro…

  • 【Unity】Unity公式のNewtonsoft JsonとNuGetからのdllを共存させる

    はじめに Unity2020よりPackageManagerからNewotonsoft.jsonがインポートできるようになりました。 Unity2020でNewtonsoft.Jsonを入れる - Qiita Unity公式のNewtonsoft.jsonそれ以前ではdllを入れていたwww.nuget.orgただUnity公式のものとNuGetから取ってきたもので一部違い(バージョンによるもの?)があったので、NuGetから取ってきたものを利用したくなりました。しかし後々誰かがPackageManagerからNewtonsoft Jsonを入れた時にエラーが出てきたら嫌だなーと思っていたらど…

  • 【Unity】WAVファイルからAudioClipを動的に生成する(WAVEのファイル構造解析)

    はじめに 今回はWavファイルからAudioClipを生成する方法について書きたいと思います。https://docs.unity3d.com/ja/2018.4/ScriptReference/AudioClip.Create.html https://docs.unity3d.com/ja/2018.4/ScriptReference/AudioClip.SetData.html はじめに 利用させていただくWavファイル インポートした際の挙動 wavファイルの構造 factチャンク無し(通常) factチャンク有り(特殊) WAVEファイルを読み取り、解析する AudioClipを生成…

  • 【Unity】Unity2020.3.32f1でEnumerable.ReverseよりもArray.Reverseがめちゃ遅いんだが??

    はじめに Unityを触っていて、なんだかArray.Reverseが遅く、Enumerable.Reverseにしてみたら速くなったという不思議な現象に出会いました。 https://docs.microsoft.com/ja-jp/dotnet/api/system.linq.enumerable.reverse?view=net-6.0 https://docs.microsoft.com/ja-jp/dotnet/api/system.array.reverse?view=net-6.0 環境 Unity2020.3.32f1 macOS Monterey 私の認識だと一般的にArra…

  • 【Unity】Unity公式のObjectPoolを使ってみる(内部実装も一部紹介)

    はじめに 今回はObjectPoolについて紹介していきたいと思います。 The object pool pattern is a software creational design pattern that uses a set of initialized objects kept ready to use – a "pool" – rather than allocating and destroying them on demand. A client of the pool will request an object from the pool and perform opera…

  • 【C#】リトルエンディアンとビッグエンディアンの変換を行う

    はじめに 今回はエンディアンの変換についてお話したいと思います。 エンディアン(英: endianness)は、複数のバイトなどを並べる順序の種類である。一般的な用語による表現ではバイトオーダ(英: byte order)、ないしそれを一部訳して日本語ではバイト順とも言う。 エンディアン - Wikipedia はじめに 概要 リトルエンディアンかどうか調べる エンディアンを変更する BinaryReader/Writerでの仕様 伝統的なエンディアン変換 概要 エンディアンには色々と種類があるようですが、ビッグエンディアンとリトルエンディアンが有名なようです。 例えば、十六進法で表現すると1…

  • 【Unity, C#】InternalsVisibleToを用いて特定アセンブリからinternalにアクセスできるようにする

    はじめに 今回はInternalsVisibleToという属性(Attribute)について紹介したいと思います。 同一アセンブリ内でないとアクセスできない皆さんご存知かと思いますが、internalを利用することで同一アセンブリでしかアクセスできないようにすることができます。 internal 型またはメンバーは、次の例のように、同じアセンブリ内のファイルでのみアクセスできます。 internal - C# リファレンス Microsoft Docs UnityではAssembly Definition Filesを利用するとアセンブリを分けることができる訳ですが、特にテスト周りでint…

  • 【Unity】NuGet importer for Unityを使って簡単にNuGetパッケージをUnityに導入する(NuGetForUnityの後継者になりうるか)

    はじめに 今回はNuGet importer for UnityというNuGetのパッケージをUnityへ導入できるようにするエディタ拡張を紹介したいと思います。github.com 一応UnityでNuGetといえばNuGetForUnityが有名だと思いますが、バージョンの指定がうまくできなかったりエラーが解消できなかったりと(私としては)上手くいかないことが多く、最近はあまり利用していませんでした。 github.com対してNuGet importer for UnityはNuGetForUnityに影響を受け一から作成した後発のパッケージで、ドキュメントの説明にもかなり自信を感じます…

  • 【C#】AES(Advanced Encryption Standard)暗号化をしてみる

    はじめに 今回はAES(Advanced Encryption Standard)暗号を利用してみるという記事になります。 Advanced Encryption Standard (AES) は、アメリカが2001年に標準暗号として定めた共通鍵暗号アルゴリズムである。アメリカ国立標準技術研究所(NIST)が公募し、Rijndael(ラインダール)がAESとして採用された[4]。 AESはSPN構造のブロック暗号である。ブロック長は128ビットであり、鍵長には128ビット・192ビット・256ビットの3種類が選択できる(鍵長が大きいほうが暗号強度が高い)。これに対し、AESの元となった Rij…

  • 【Unity, C#】K4os.Compression.LZ4を使ってLZ4の圧縮・展開をしてみる

    はじめに 今回はUnityでLZ4を用いてバイト配列を圧縮してみるという記事になります。 LZ4 は圧縮と展開の速さに焦点を当てた可逆圧縮アルゴリズムである。バイト指向の圧縮方法であるLZ77ファミリーに属する。 gzipのようなアルゴリズムより低い圧縮率であるLZOよりわずかに圧縮率が低い。しかし、圧縮速度はLZOと同等であり、gzipより数倍速い。展開速度はLZOより著しく速くなりうる[2]。 LZ4 - Wikipedia はじめに ライブラリ インストール 利用方法 圧縮レベルの変更 ひとこと ライブラリ .NETで動作するライブラリをNuGetを探してみたところ、K4os.Compr…

  • 【C#】MemoryStreamを利用してメモリにデータを読み書きする

    はじめに 今回はMemoryStreamというメモリにデータを読み書きできるクラスの使い方について書きたいと思います。docs.microsoft.com 定義MemoryStream クラス (System.IO) Microsoft Docs はじめに 使い方 使い方 MemoryStreamはStreamの派生クラスであり、バイトの読み取りと書き込みをサポートしています。 Stream クラス (System.IO) Microsoft DocsStreamを利用する場合は3 つの基本的な操作を覚えればひとまずOKだと思います。 読み取り - ストリームからバイト配列などのデータ…

  • 【Unity, iOS】OnnxRuntimeをiOS端末で動作するように修正してみる

    はじめに 今回はOnnxRuntimeをiOSで動作させてみようという記事になります。github.com ONNX Runtime: cross-platform, high performance ML inferencing and training accelerator 一応公式でiOSに対応していると記述されていますが、Unityで動作させるのにはかなり苦労をしました。 OnnxRuntimeの対応早見表ONNX Runtime Home 備忘録の意味合いも兼ねて書き残しておきたいと思います。 はじめに 環境 依存先のライブラリのインストール OnnxRuntimeをインストー…

  • CMakeを初めて使ってみる(実行ファイル、静的ライブラリ、動的ライブラリ)

    はじめに 今回はCMakeを初めて触ってみるという記事です。 CMake is a tool to manage building of source code. Originally, CMake was designed as a generator for various dialects of Makefile, today CMake generates modern buildsystems such as Ninja as well as project files for IDEs such as Visual Studio and Xcode. CMake Reference…

  • 【Unity】OpenJTalkがWin, Mac, Andriod, iOSで動くようなC#ラッパーを作りたい①

    はじめに UnityでOpenJTalkを利用したく、今までOpenJTalkForUnityとSharpOpenJTalkを試してきました。github.comgithub.comどちらも一部プラットフォームのUnityでは動作確認できたのですが、iOS・Androidでは動作は確認できていません。 ライブラリ 公式対応プラットフォーム OpenJTalkForUnity Windows SharpOpenJTalk win-x64, win-x86, osx, linux, browser-wasm 一応SharpOpenJTalkに関しては.soと.aが入っていたので、iOS・Andro…

  • 【Unity】SharpOpenJTalk.Langを用いてテキストから音素ラベルを抽出してみる

    はじめに 今回はSharpOpenJTalk.Langというライブラリを利用してテキストから音素ラベルを抽出してみる記事になります。 github.com 前回SharpOpenJTalkの紹介をしましたが、SharpOpenJTalk.Langは音素ラベルの抽出のみを備えたライブラリのようですね。 www.hanachiru-blog.com 具体的には音声データがなくても動作するといったメリットがあります。後は軽量(なはず)とかですかね。 はじめに NuGetからSharpOpenJTalkを取得 Unityへインポート コーディングを行う ひとこと NuGetからSharpOpenJTa…

  • 【Unity】AssetPostprocessorを利用してアセットをインポートした前後に処理を走らせる

    はじめに 今回はAssetPosprocessorを利用してアセットをインポートした前後に処理を走らせてみる記事になります。docs.unity3d.com はじめに 使い方 関数一覧 Postprocess Preprocess 応用例 特定のフォルダにファイルが追加・削除されたときに操作を行う Textureをインポートした際に設定を書き換える 使い方 以下のコードをEditorフォルダ(厳密にはアセンブリがEditorのみであればOK)に入れます。 public class AssetPostProcessorSample : AssetPostprocessor { // アセットをイ…

  • 【Unity】IPreprocessBuildWithReport,IPostprocessBuildWithReportを利用してビルド前後に処理を挟む

    はじめに 今回はIPreprocessBuildWithReportとIPostprocessBuildWithReportを使ってビルド前後に処理を挟んでみるという記事になります。 はじめに 概要 使い方 概要 公式ドキュメントは以下の通り。docs.unity3d.comdocs.unity3d.com 使い方 public class CustomBuildProcessor : IPreprocessBuildWithReport, IPostprocessBuildWithReport { // 複数コールバックがある場合に呼ばれる順番の設定ができる(低い方が優先) public i…

  • 【Unity, XCode】XCodeでライブラリ(dylib, bundle, a)を作成してUnity(iOS)で利用してみる

    はじめに 今回はXCodeでライブラリ(動的リンク, 静的リンク)を作成してUnityで利用してみたいと思います。具体的には動的ライブラリ(共有ライブラリ)の.dylib,動的ライブラリ(バンドル)の.bundle,静的ライブラリの.aの3種類について紹介します。またUnityの対応するプラグインの拡張子の一覧は以下に記載されていました。 docs.unity3d.com はじめに XCodeでプロジェクトを作成する 動的ライブラリ(dylib) ファイル作成 ビルド エラーが出てくるときの対処法 Unityで利用する 動的ライブラリ(Bundle) ファイル作成 ビルド Unityで利用する…

  • 【XCode】'__declspec' attributes are not enabled; use '-fdeclspec' or '-fms-extensions' to enable support for __declspec attributesというエラーの対処法

    はじめに XCodeでc++のライブラリを作成しようとしたところ、以下のようなエラーが出てきてしまいました。 '__declspec' attributes are not enabled; use '-fdeclspec' or '-fms-extensions' to enable support for __declspec attributes 一応解決できたので対処法をメモしておきます。 はじめに 対処法 対処法 対処法上の画像を参考にしながら、Custom Compiler FlagsのOther C++ Flagsに-fdeclspecを追加すればOKです。

  • GitHubのWebhooksを用いてLINEに通知を送ってみる

    はじめに GitHubとSlackの連携は定番ですが、GitHubとLINEの連携も可能だと聞き面白そうなのでやってみたいと思います。 動作している様子 はじめに LINE Notifyで設定を行う GitHubで設定を行う LINE Notifyで設定を行う まずはLine Notifyにログインします。 notify-bot.line.me マイページに移動するとGitHubのアイコンがあるのでそれを選択してください。 LINE NotifyのマイページAuthorize LINE Notifyという画面があるのでパスワードを打ち込み認証。 Authorize LINE Notify通知を…

  • 【Unity】LocalizationのLocal Variablesをスクリプトから設定する

    はじめに 今回はLocalizationのLocal Variableをスクリプトから設定してみる記事になります。 Local Variables(ローカル変数)を活用している様子LocalizeStringEventコンポーネントから設定する方法はよく紹介されているのですが、あくまでスクリプト上でLocal Variables(ローカル変数)を設定して活用する方法が分かりませんでした。 LocalizeStringEventそこでいくつかやり方を見つけたので紹介したいと思います。 はじめに Smartを有効にする やり方 LocalizedStringを活用する方法 GetLocalized…

  • 【Unity】エディタ拡張でEnumを複数選択できるEnumMaskFieldは廃止されEnumFlagsFieldに置き換わったぽい

    はじめに エディタ拡張でEnumを複数選択する要素を作りたいときはEnumFlagsFieldを使おうねという記事になります。 Enumを複数選択 以前(Unity何からは要調査)はEnumMaskFieldで実装できたのですが、少なくともUnity2017.4の段階ではObsoleteつまり廃止となっており、EnumFlagsFieldの利用を推奨とのようです。これだけで記事が終わるのも寂しいので、EnumFlagsFieldの使い方だけ紹介したいと思います。 はじめに EnumFlagsField 使い方 EnumFlagsField オーバーロードがたくさんあるのですが、まずは代表的なも…

  • 【Unity】Text Animator for Unityを使って簡単にTextMeshProにアニメーションをつける

    はじめに 今回はText Animator for Unityというアセットの紹介になります。 動作している様子ざっくり紹介するとRich Text Tagをつけるとそれに対応したアニメーションをする感じで、設定自体も簡単なのですぐに習得することができると思います。 はじめに 概要 環境要件 セットアップ Text Animatorの実装 文字を動的に表示する テキストにエフェクトを追加する エフェクトの種類について Behavior effects Appearance effectsとDisappearance effects デフォルトで適応されるエフェクトを指定する エフェクトのパラメ…

  • 【Unity】AssetStudioでUnity製のゲーム・AssetBundleの中身を覗き見・エクスポートする(悪用はしないように)

    はじめに 今回はAssetStudioというツールを利用して、AssetBundleを抽出&解析してみるという記事になります。github.com AssetBundleの中身を解析している様子あんまり深く掘っていくとグレーな予感がしてきますが、逆に開発者にとってもこういった危険性があるのだと認識していただければ幸いです。またAsset Studioの利用は全て自己責任でお願いします。悪用はしないようにしてください。 はじめに 概要 環境 インストール 下準備 使い方 対象ファイルをエクスポート ひとこと 概要 AssetStudioは以下のように説明されています。 None of the r…

  • 【Unity】OpenJTalkのC#ラッパーであるSharpOpenJTalkを利用して音声合成を行う

    はじめに 前回OpenJTalkForUnityというUnityで簡単にOpenJTalkを利用できるようにしたパッケージを紹介しました。 www.hanachiru-blog.comただこのパッケージはWindowsでしか動作しないという欠点があり、どうしてもクロスプラットフォームで動作させたかったので自作C#ラッパーを作成しようと思っていたのですが、SharpOpenJTalkなるものを発見しました。 github.com実際にどれくらいのプラットフォームで動作するかは検証する必要がありますが、ひとまず動かすところまでやってみようと思います。 はじめに 環境 VisualStudioのNu…

  • 【Unity】今更ながらAssetBundleの基礎的な使い方を学んでみる

    はじめに 以前Addressable Asset Systemについての基本操作の記事を書いたのですが、Asset Bundleの知識もマトモに得ずにけしからんと怒られてしまうかもしれないのでAsset Bundleの基礎を学んでいこうかなと思います。(Addressableは内部的にAssetBundleを利用している) www.hanachiru-blog.comまた公式ドキュメントはこちら。 docs.unity3d.com はじめに 概要 利用の流れ アセットバンドルにアセットを割り当てる アセットバンドルをビルドする Manifestファイル AssetBundle ファイル アセッ…

  • 【Unity】LocalizationのString TableをCSVファイルにインポート・エクスポートする方法

    はじめに 今回はLocalizationのString TableをCSVファイルにインポート・エクスポートする方法について書きたいと思います。 docs.unity3d.comまたLocalizationの基本的な使い方についての記事は前に書いたのでよければチェックしてみてください。 www.hanachiru-blog.com はじめに 環境 CSVファイルにエクスポートする CSVファイルをインポートする 環境 Unity 2020.3.29f1 Localization v1.2.1 CSVファイルにエクスポートする メニューバーよりWindow -> Asset Management…

  • 【Unity】TextMeshProUGUIで描画したテキストに座布団(テキストの後ろの背景)をつけてみる

    はじめに 今回はTextMeshProUGUIで描画したテキストに座布団(テキストの後ろの背景)をつけてみるという記事になります。 テキストの座布団TextMeshProならUnityEngine.Boundsを利用することで割と簡単に実現できるのですが、TextMeshProUGUIではその手法が上手く使えずどうすれば良いかなーと考えていました。 TextMeshPro に背景色(Background-color)を付けてみる Unity+AssetStoreおすすめ情報またContent Size FitterとHorizontal Layout Groupの合わせ技でも似たことができ…

ブログリーダー」を活用して、はなちるさんをフォローしませんか?

ハンドル名
はなちるさん
ブログタイトル
はなちるのマイノート
フォロー
はなちるのマイノート

にほんブログ村 カテゴリー一覧

商用