Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
(ゆーゆー)mXparserとInternalsVisibleToを駆使して超便利なUnity...
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
akatsukinewgrad
August 02, 2021
Programming
1.7k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
(ゆーゆー)mXparserとInternalsVisibleToを駆使して超便利なUnityエディタ拡張を作った話
akatsukinewgrad
August 02, 2021
More Decks by akatsukinewgrad
See All by akatsukinewgrad
2023/1/25_QAテスター meet up!
akatsukinewgrad
0
180
成果発表資料.pdf
akatsukinewgrad
0
2.2k
広大なフィールドを気持ちよく駆け抜けるための技術.pdf
akatsukinewgrad
0
670
正規表現とReDoS.pdf
akatsukinewgrad
0
660
Unityで大量のオブジェクト_を吹き飛ばしたい.pdf
akatsukinewgrad
0
710
新卒2年目が思う1年目の学び.pdf
akatsukinewgrad
0
630
障害訓練の取り組みについて.pdf
akatsukinewgrad
0
810
7分でわかるアカツキゲームス
akatsukinewgrad
0
660
Bitcoinだけでスマートコントラクト.pdf
akatsukinewgrad
1
1.1k
Other Decks in Programming
See All in Programming
どこまでゆるくて許されるのか
tk3fftk
0
480
LaravelLive Japan の裏方のすべて — 第188回 PHP勉強会@東京 (2026-06-24)
suguruooki
2
150
Embedded SREと共に達成した会員管理システムのAWS移行 - SRE NEXT 2026 ランチスポンサーセッション
niftycorp
PRO
1
2.5k
JAWS-UG横浜 #102 AWSサ終供養LT会 成仏できない AWS サービスたち 〜本日、三体供養します〜
maroon1st
0
180
symfony/aiとlaravel/boost
77web
0
130
Prismを使った型安全な暗号化_関数型まつり2026
_fhhmm
0
130
Laravelで学ぶ Webアプリケーションチューニング入門/web_application_tuning_101
hanhan1978
3
430
気圧・高度・GPSを記録&可視化するアプリ「Koudo」を作った話
hjmkth
1
360
ビデオ通話が繋がる0.2秒で何が起きているのか
supurazako
2
150
20260623_Loop Engineeringで自分の分身の問い合わせBotを作る
ryugen04
0
220
Foundation Models frameworkで画像分析
ryodeveloper
1
120
自作OSでスライド発表する
uyuki234
1
3.8k
Featured
See All Featured
30 Presentation Tips
portentint
PRO
1
350
Into the Great Unknown - MozCon
thekraken
41
2.6k
Building Adaptive Systems
keathley
44
3.1k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.4k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
870
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.4k
Accessibility Awareness
sabderemane
1
150
Visualization
eitanlees
152
17k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.5k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
260
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
800
How STYLIGHT went responsive
nonsquared
100
6.2k
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エディタ拡張 を作った話 齋田悠生@ゆーゆー 終