$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
(ゆーゆー)mXparserとInternalsVisibleToを駆使して超便利なUnity...
Search
akatsukinewgrad
August 02, 2021
Programming
0
1.6k
(ゆーゆー)mXparserとInternalsVisibleToを駆使して超便利なUnityエディタ拡張を作った話
akatsukinewgrad
August 02, 2021
Tweet
Share
More Decks by akatsukinewgrad
See All by akatsukinewgrad
2023/1/25_QAテスター meet up!
akatsukinewgrad
0
150
成果発表資料.pdf
akatsukinewgrad
0
2.1k
広大なフィールドを気持ちよく駆け抜けるための技術.pdf
akatsukinewgrad
0
600
正規表現とReDoS.pdf
akatsukinewgrad
0
590
Unityで大量のオブジェクト_を吹き飛ばしたい.pdf
akatsukinewgrad
0
640
新卒2年目が思う1年目の学び.pdf
akatsukinewgrad
0
560
障害訓練の取り組みについて.pdf
akatsukinewgrad
0
730
7分でわかるアカツキゲームス
akatsukinewgrad
0
590
Bitcoinだけでスマートコントラクト.pdf
akatsukinewgrad
1
990
Other Decks in Programming
See All in Programming
tsgolintはいかにしてtypescript-goの非公開APIを呼び出しているのか
syumai
6
2.2k
Full-Cycle Reactivity in Angular: SignalStore mit Signal Forms und Resources
manfredsteyer
PRO
0
210
Context is King? 〜Verifiability時代とコンテキスト設計 / Beyond "Context is King"
rkaga
9
1.1k
Cap'n Webについて
yusukebe
0
130
Developing static sites with Ruby
okuramasafumi
0
270
手が足りない!兼業データエンジニアに必要だったアーキテクチャと立ち回り
zinkosuke
0
630
How Software Deployment tools have changed in the past 20 years
geshan
0
29k
著者と進める!『AIと個人開発したくなったらまずCursorで要件定義だ!』
yasunacoffee
0
130
AtCoder Conference 2025「LLM時代のAHC」
imjk
2
430
TUIライブラリつくってみた / i-just-make-TUI-library
kazto
1
380
非同期処理の迷宮を抜ける: 初学者がつまづく構造的な原因
pd1xx
1
700
SwiftUIで本格音ゲー実装してみた
hypebeans
0
160
Featured
See All Featured
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
359
30k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
RailsConf 2023
tenderlove
30
1.3k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.5k
Statistics for Hackers
jakevdp
799
230k
The World Runs on Bad Software
bkeepers
PRO
72
12k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
9.8k
The Power of CSS Pseudo Elements
geoffreycrofte
80
6.1k
The Language of Interfaces
destraynor
162
25k
A better future with KSS
kneath
240
18k
Java REST API Framework Comparison - PWX 2021
mraible
34
9k
Transcript
Unityエディタ拡張 mXparser と InternalsVisibleTo を駆使して Unityエディタ拡張 を作った話 齋田悠生@ゆーゆー
自己紹介 •齋田悠生@ゆーゆー •21卒クライアントエンジニア(今秋入社予定) •趣味 = ラブライブ! •昨日放送の 「ラブライブ!スーパースター!!」で寝不足
Unity、こういうことありませんか?
Unity、こういうことありませんか? オブジェクトを いい感じにソートしたい! オブジェクト名を 規則的に変更したい! オブジェクトを 整列させたい! 数式を使って 座標とか決めたい!
作りました
「Hierarchy Utility」 • 機能一覧 • 数式による座標・角度・スケール設定 • PowerPointやPhotoshopにあるような「整列」 • Blenderにあるような「配列」
• 一括名前変更 • 一括連番付け • 座標、名前によるソート • 数式によるフィールド、プロパティ設定 • 数式によるフィルタリング
数式による座標・角度・スケール設定 一様乱数 i = Hierarchy上の 選択番号 n = 選択されている オブジェクト数
整列 中央揃え 等間隔に配置
配列 指定したオブジェクトを 軸にして円状に配列 配列する個数 指定した間隔で 直線状に配置
一括名前変更 置換前の 正規表現 置換後の 正規表現
一括連番付け 書式 開始イン デックス
などなど…
mXparser • 文字列としての数式を計算できるライブラリ • Hierarchy Utilityの数式処理は全部コレ 【使い方】 1. http://mathparser.org/mxparser-downloads/ からダウンロード
2. Pluginsフォルダ内に.NET用のDLLファイルを入れる 3. で使えるようになる using org.mariuszgromada.math.mxparser;
mXparser • ビルトイン関数が大量に存在 • 三角関数はもちろん、πなどの定数、乱数も使用可能 • コード例 var exp =
new Expression("tan(x)"); exp.addArguments(new Argument("x", "pi/4")); Debug.Log(exp.getExpressionString() + " = " + exp.calculate());
実装に苦戦した部分 • Prefabの複製時、構造を維持したままコピーできない…!!!! • を使うと、Prefabじゃなくなってしまう • を使っても、 「GameObjectの子のPrefab」を構造を保ってコピーするのは大変だし、 値の変更を正しく反映させるのも難しい… •
う~~~~~~~ん… Instantiate PrefabUtility.InstancePrefab
待てよ…?
いつもやってる Ctrl+D が使えれば最強では??
Ctrl+Dの源を探しに行く • GitHubに上がっているUnityの内部コードで「Duplicate」を検索
Ctrl+Dの源を探しに行く •発見!!!!!!!!!!!!
Ctrl+Dの源を探しに行く
Ctrl+Dの源を探しに行く •internalやんけ!!!!!!!!!!!!!!!!!
リフレクションは面倒だし なんとかならないかなぁ…
なりました
InternalsVisibleTo
InternalsVisibleTo 【参考資料】https://qiita.com/mob-sakai/items/f3bbc0c45abc31ea7ac0 • 特定の名前を持つアセンブリに対して、 internalクラス・メソッドへのアクセスを許可する属性 • リフレクションと異なり、インテリセンスが効く • 実は、UnityEditor.dll は色々な名前のアセンブリに対して
internalクラス・メソッドへのアクセスを許可している • その中の一つが「Unity.InternalAPIEditorBridgeDev.001」
InternalsVisibleTo • internalクラス・メソッドにアクセスしたい C#スクリプトがあるフォルダで Assembly Definition を新規作成 • 名前は 「Unity.InternalAPIEditorBridgeDev.001」
としておく
InternalsVisibleTo • うわぁぁぁぁ 候補がちゃんと出てくる!!!!!!!!!! • うわぁぁ何のエラーもなく internalメソッドが使えている…!!!!!!!!!!
まとめ •mXparser • 文字列としての数式を計算できる! •InternalVisibleTo • Unityの内部機能を簡単に扱える! •どちらもとても便利なので エディタ拡張の際はぜひ!!
Unityエディタ拡張 mXparser と InternalsVisibleTo を駆使して Unityエディタ拡張 を作った話 齋田悠生@ゆーゆー 終