なつねこメモ

主にプログラミング関連のメモ帳 ♪(✿╹ヮ╹)ノ 書いてあるコードは自己責任でご自由にどうぞ。記事本文の無断転載は禁止です。

C#

UdonSharp の特定のクラスのみを受け入れる入力フィールドを作りたい

そんなことをする必要があるかどうかはさておき、やりたくなったので。 ということでいつもの前提環境 Unity 2018.4.20f1 UdonSharp 0.18.6 といっても、実装は簡単で、こんな感じ。 もしかしたらこんなことしなくても良いカモだけど。 [SerializeField] [Ud…

Unity だけでメッシュを作ってアセットとして保存したい

危うく今月の学びがなくなるところでした。 ということで、 Blender などを使わずに任意のメッシュを作成して保存する方法。 やり方は簡単で、以下のコードで 1 tris なメッシュが作成・保存されます。 // see: https://www.wikiwand.com/ja/%E6%AD%A3%E4%B8…

Unity で File (Local) ID を元に Object を検索したい

まあ普通にやっていてそんなケースは無いと思うのですが、以下の場合。 Unity のシーンファイルを解析中 YAML のタグ情報は使えない みたいな場合、 GetComponentsInChildren<T> からがんばって探すことになります。 そういったときのやり方。 まずは、以下のプ</t>…

Unity で Animator Controller を動的生成したい

前回、 Animation を動的に生成しましたが、 Controller の方はテンプレートでした。 今回はそこも C# Script から生成してみました。 ちなみに動機は同じですが仕様上不可能だと分かったので供養としておいておきます。 Animator Controller の生成自体も、…

Unity Editor のカスタムエディター上で配列を良い感じに扱いたい

配列を出すためのメソッドが標準で用意されていなかったので、メモしておきます。 例えばこういう配列があったとして。 [SerializeField] private VRCAvatarDescriptor[] _avatars; これをカスタムエディター上で良い感じに表示して欲しいとき、 下のように …

Unity で Animation を動的生成したい

元は VRChat 関連だけど、アバターの GameObject のツリー構造に依存せず、 自由にギミックを仕込む為の仕組みを作りたかった。 ただ、そのまま anim を配布しただけだと対応できないので、動的に生成してみました。 Animation を動的に生成するには、以下の…

Unity のエディター拡張を DLL 形式で配布したい

C#

Unity のエディター拡張とかでソースを公開したくない場合とか、 追加参照が必要なときに DLL で配布すると良い感じに出来たりします。 そういうときのための、 DLL でエディター拡張を作る方法についてのメモ。 前提環境は以下の通り: Windows 10 Microsof…

.NET 公式で定義されている P/Invoke シグネチャーを使って Win32 API を使いたい

C#

暇だったので .NET Foundation (github.com/dotnet) のリポジトリ一覧を眺めていると、 Windows の P/Invoke の定義をしているリポジトリがあったので、 それを使って Win32 API を呼び出してみます。 前提環境は以下の通り Windows 10 Microsoft Visual Stu…

C# で Glob Pattern でファイルを検索したい

C#

Glob Pattern でファイル検索したいですよね、私はしたいです。 ということで、 C# で使ってみるためのメモです。 探してみると、 Microsoft 公式のライブラリがあったのでそれを使います。 Microsoft.Extensions.FileSystemGlobbing NuGet で上記パッケージ…

Unity でプロジェクト外部の参照を追加したい

ここでいう外部の参照っていうのは、 NuGet ライブラリだったり、 .NET Framework には含まれてるけど追加参照が必要なものを指します。 NuGet ライブラリを使う場合 公式ドキュメントでは nuget.org から DL する方法が紹介されていましたが、 いちいち落と…

Unity で Texture2DArray を作成したい

使っているシェーダーの都合上、 Texture2DArray を使う必要が出てきたのだけど、 どうやら Texture2DArray は直接作れないようなので、作り方のメモ。 ドキュメントによると、 Texture2DArray はコードから作成する必要がある様子。 なので、エディター拡張…

Unity で Project から Hierarchy へスクリプトを使って Prefab を展開したい

Prefab の設定を楽にしたくて、エディター拡張を作ったのですが、 もはや Prefab を Hierarchy に移すのさえ面倒だったのでやり方を調べました。 前提環境は以下の通りです : Unity 2018.4.20f1 Personal 動作としては、以下のような流れになります。 Prefab…

Unity のエディター拡張で D&D を受け入れたい

VRChat でいろいろやっている影響もあって Unity を最近よくいじっているのですが、 大量のオブジェクトの操作をやりたくなったので、エディター拡張を作りました。 ただ、私の知る限り一括で Object を設定できるコントロールは無かった気がしたので、 ドラ…

SteamVR でレーザーポインターを実装する

VR ゲームで操作するとき、レーザーポインター形式の操作方法をよく見かけます。 それを Unity + SteamVR で実装してみます。 実行環境は以下の通りです: Windows 10 Unity 2019.2.17f1 Personal Valve Index この記事では以下のアセットを使用します: Ste…

SteamVR + Index Controller で Animation を使いながら Finger Tracking をしたい

先日の記事で指ト[ラッキングをしましたが、 Animation Controller と使うと、 Animation で上書きされてしまってうまく動作しないらしいので、 改めて、 Animation Controller に対応した指トラッキングをやってみました。 前提環境は以下の環境です。 Unit…

SteamVR + Unity で、アバターのサイズを人間の大きさに合わせたい

前回までの記事で、せっかく自分の動きでアバターを動かせるようにしたけど、 大きさがあっていないので、若干の違和感が発生してしまっていました。 ということで、この記事では自己流でサイズを合わせてみました。 いつもの通り、前提環境は以下の通りです…

SteamVR + Index Controller で Finger Tracking をしたい

ということで、久々ですが SteamVR の記事です。 せっかく Index Controller があるので、指の動きを良い感じにしてみようと思います。 前提環境 Unity Personal 2019.2.16f1 Windows 10 Index Controller SteamVR 関連が設定済みのシーン 使用するアセット…

Unity 拡張で、 Component から Inspector に表示されている名前をとりたい

大体のことは GitHub にある UnityCsReference を読めば、 どの API 使えば良いか解決するなと気がつき始めました、みかです。 Unity で GameObject とかに Component をくっつけると表示されるこの名前 これ 最初はクラス名から自力で生成するのかと思って…

UWP API の GraphicsCapture で Window Handle をソースとして使いたい

C#

久々の C# ネタ、かつ UWP ネタということで、今年春のアップデートでできるようになった事についてご紹介。 UWP でスクリーンショットや動画の撮影などに使える GraphicsCapture API で、 Win32 API でおなじみの hWnd をソースとして使えるようになってい…

Windows で壁紙が変更されたことを知りたい

C#

壁紙が変更されたことを検知して、何かしたい!って場面に遭遇したので簡単に残しておきます。 Microsoft.Win32.SystemEvents.UserPreferenceChanged は DPI の調整などでも発動するので、 それ以外の方法で知る必要があります。 そこで、 ManagementEventWa…

Pixela と Azure Functions で日々の SNS への投稿数を記録したい

C#

2018 年 11 月中旬頃から、 Misskey への日々の投稿数を Pixela に記録しているので、 私はこうやりました!という記事です。 普段はあまりしない自作の成果物の宣伝もあるけど許してネ。 Pixela は簡単に言うと草を commit 以外でもはやせるサービスです。 …

EnumWindows で見えない UWP アプリを除外したい

突然の Win32 ネタです。 トップレベルウィンドウを列挙する場合、 EnumWindows を使うのですが、 そのとき、見えないウィンドウなども混ざってしまいます。 そういうのを除外する方法です。 コードはこんな感じ。 NativeMethods.EnumWindows((hWnd, lParam)…

Internal compiler error: 型 'Microsoft.Cci.DummyModuleReference' のオブジェクトを型 'Microsoft.Cci.IAssemblyReference' にキャストできません。

C#

タイトルママのエラーが Release ビルド時に出た。 ソリューションを閉じる NuGet キャッシュを全て消す (VS から消すと、消せませんでしたと出ることがあるが、それで OK) プロジェクトの .vs ディレクトリを消す bin や obj などのビルド時に生成されたデ…

UWP アプリから、ストアアプリのレビュー画面を開きたい

C#

アプリの設定とかから、「気に入ったらレビューしてね!」みたいなのを追加したかった。 以下のようにすることで起動できます。 await Launcher.LaunchUriAsync(new Uri($"ms-windows-store:REVIEW?PFN={Package.Current.Id.FamilyName}")); ちなみに、 MSDN…

Wallpaper Engine の仕組みが気になったので

C#

先日、 Twitter してたら面白そうなアプリのツイートが流れてきました。 Steam で販売している”WallpaperEngine”というデスクトップの画像を動画に変更できるアプリが面白い。 設定も凄く簡単だし、最大化しているタブがある時は動画を停止してくれるので CP…

PC の型番を取得したい

C#

PC の型番情報を取得したくなったので、取得してみました。 こういった情報は、 Windows Management Instrumentation を使えば取得できるようです。 ということで、早速取得してみます。 using System.Management.dll への参照設定が必要です。 今回は型番だ…

UWP で Entity Framework Core を使いたい

Entity Framework Core を使ったアプリを UWP で作ったので、 ライブラリとツールの使い方をメモしておきます。 基本、ドキュメントの Getting Started 通りにすればいけます。 はじめに、 NuGet から以下のパッケージをインストールします。 Microsoft.Enti…

EntityFramework で子の子を読み込みたい

C#

リレーションが下のような感じの場合。 public class Anime { public int AnimeId { get; set; } public int Year { get; set; } public int Quarter { get; set; } public string Title { get; set; } public virtual ICollection<Episode> Episodes { get; set; } }</episode>…

LINQ to Entities での DateTime.Now

C#

LINQ to Entities + SQLite で下のようなクエリを使うと、 // 今やるべき予定 var plans = context.Plans.Where(w => w.StartAt <= DateTime.Now && DateTime.Now <= w.EndAt); こんな SQL が発行されます。 SELECT [Project1].[C1] AS [C1], [Project1].[Pl…

UWP で ItemsControl.Items の変更を検知したい

WPF だと、 ItemsControl.Items は INotifyCollectionChanged を実装しているので、 いつもどおり検知できるのですが、 UWP だとなくてちょっと困ったのでメモ。 INotifyCollectionChanged の代わりに、 IObservableVector を実装しているので、 そちらを使…