エフアンダーバー

個人開発の記録

Unity

【Unity】 Quaternionの回転順の話

Unityも2020.1になるとのことなので、ひとつ今更な話でもしようかと。 UnityEngine.Quaternionのoperator *を見ると 次のように説明されています。 Combines rotations lhs and rhs. Rotating by the product lhs * rhs is the same as applying the two rot…

【Unity】 ECS CHANGELOG [0.2.0]-[0.11.0] 和訳メモ

ECSのまとめ記事の更新をしようとCHANGELOGを翻訳したのだけど、 それだけで疲れたので更新は先送りにしてとりあえずこれだけ公開。 半年サボった代償は大きい……。 いくつか意味がとれない文があったりと翻訳の質が少しアレですが、 元々自分用のメモだった…

【Unity】 ECS『を』実装しよう

ECSの記事は徐々に増加しており盛り上がりを見せていますが、 それでもやはりECSとは何かよくわからないという声は多く、 なればその仕組みを紐解くべく自前で実装してみよう……という建前の思いつき記事です。 これを読んでUnity ECSが使いこなせるようにな…

【Unity】 ECSへ 思考の移行ガイド

前回書いたECS記事はなかなか好評だったみたいで、ありがたいことに日本の公式にもツイートしていただきました。 www.f-sp.com しかし一方で、反応を見ているとECSに対して否定的な意見が多く見られました。 内容から推察するに、おそらく前回記事が機能の説…

【Unity】 ECS まとめ(後編)

前編の続きです。 www.f-sp.com C# Job Systemとの連携 エンティティの並列列挙 IJobChunk ForEach ジョブとEntityManager ComponentDataFromEntity EntityCommandBufferSystem EntityCommandBuffer.Concurrent ビルトインのEntityCommandBufferSystem 共有…

【Unity】 ECS まとめ(前編)

前にUnityのECSについて調べて記事を書きましたが、 おそらく今後しばらく使うことはないと思われるので、 忘れないうちに現状のUnity ECSについてまとめておくことにします。 www.f-sp.com ……という動機で記事を書き始めたのですが、 なんやかんやで片っ端…

【Unity】 ネイティブプラグインのリロード

Unityにてネイティブプラグインのリロードに苦労したのでメモ。 Windowsを想定した記事ですが、おそらく各OSに対応したAPIを叩けば他のOSでも同様のことはできるはず。 基本的に次の記事の内容をやってみたよ、という記事です。 qiita.com 自力でやることに…

【Unity】 『ECSだけしかいない世界』の補足 - ForEach -

前回記事の公開後、Twitter上でForEachについて少し議論があったので、 前回雑に流したあたりについてもう少し詳しく書くことにします。 www.f-sp.com <19/04/17 更新> ECS preview.30対応のコードに更新。 <19/09/23 更新> インクリメンタルガベージコレク…

【Unity】 ECSだけしかいない世界

今更ながらUnityのECSについて学習したので、ECSで簡単なゲームを作ってみました。 巷ではECSが一種の高速化手法のように使われているサンプルが多いので、 ECSはアーキテクチャなんだぞ、ということを示すためにGameObjectとComponent禁止縛りで書くことに…

【Unity】 物理演算の基礎

Unityでアクションゲームを作る上で避けては通れないのが、 コライダー(Collider)やリジッドボディ(Rigidbody)といった物理演算コンポーネントの存在です。 特に物理的な挙動を再現したいわけではなくても、当たり判定に関する処理のためにはこれらが必要に…

【Unity】 Rigidbodyの回転方法

Rigidbody(剛体)の移動方法については以前書きましたが、回転方法については書いていなかったので今更ながらまとめてみます。 まあ、移動方法とそんなに変わらないんですが・・・。 www.f-sp.com 準備 説明の簡略化のため、本記事内では下記の記号は特別な…

【Unity】 Quaternionの使い方

Quaternion(クォータニオン、四元数)はUnityでオブジェクトを回転させる際に必要となる数です。 Quaternionの理論自体は非常に数学的で難しいのですが、Unity上で使うだけであればいくつかの特徴を覚えるだけで比較的容易に利用できます。 この記事では、Q…

【Unity】 Quaternion API解説

Quaternion(クォータニオン、四元数)は回転操作において重要な数です。 しかし、回転という操作がなかなか想像しづらいことや、Quaternionの扱いに少し癖があることなどから、 結構ハマりやすいところだと思います(というか、自分がよくハマります)。 そ…

【Unity】 Matrix4x4の罠

Matrix4x4でとてつもなくしょうもないバグにハマったのでメモ。 問題コード 何気なくこんな感じのコードを書いて、「あれ?」となりました。 using UnityEngine; public class MatrixSample : MonoBehaviour { private void Start() { transform.position = …

【Unity】 SmoothDampの謎

ユニティちゃんのリパッケージ作業中、SmoothDampの挙動がどうも自分の理解と違うことに気づいたので調べてみました。 www.f-sp.com SmoothDampとは? スクリプトリファレンスによれば、 Gradually changes a vector towards a desired goal over time. The …

Unityと改行コード

Visual Studioを利用してUnityのスクリプトを書いているとよくこんな警告が出ます。 There are inconsistent line endings in the 'Assets/XXX.cs' script. Some are Mac OS X (UNIX) and some are Windows. This might lead to incorrect line numbers in s…

ユニティちゃんをRe-パッケージング!!

味気ないサンプルに華を添えてくれる存在として当ブログでもお世話になっているユニティちゃん。 非常にありがたい存在ではあるのですが、いざパッケージをインポートしてみるといろいろと問題が多いことに気が付きます。 そこで、Unity初心者でも簡単に扱え…

【Unity】スプライト端の謎の線/ゴミ/ちらつきの修正方法

Unityで何気なくスプライトを使っていると上下左右に現れる謎の線。 時としてゴミのような点として現れたり、画面が動いている間だけ現れたりもします。 さらには普段は出ないのに画面サイズ(解像度)が変わったときだけ出てきたりと、とにかく厄介なやつで…

Unityのゲーム画面を録画!!

ブログとかに貼る用にゲーム画面をアニメーションGIFやMP4で手軽に保存できるエディタ拡張が欲しかったのでつくってみました。 とはいっても、こちらのFrameCapturerを改造させてもらっただけなのですが。 本家FrameCapturer(GitHub) i-saint.hatenablog.c…

【Unity】 EditorWindowのライフサイクルの謎

EditorWindowが他のGUIアプリケーションと比べてかなり特殊な挙動をするのでその辺について。 前回の記事や 前々回の記事は このあたりを調べている過程で学習したことです。 はじめに EditorWindowクラスを継承してカスタムウィンドウをつくっていると、 思…

Unityのリソース管理

前回の記事や次回の記事を書くにあたってUnityのリソース管理についていろいろ調べたのでメモ。 前回の記事を書いたときも思ったのだけど、「リソース」ってどの範囲を指す言葉だろう。 「オブジェクト」とか「メモリ」とか他の言葉を使うことも考えたのです…

UnityとIDisposableの罠 【修正版】

この記事について 先日投稿した記事について再検証したところ、間違いや勘違いが多数見つかったため修正版を投稿します。 また、その際にいくらか細部について理解できた部分があるため、それらについて追記しています。 内容は大部分が元記事と重複していま…

UnityとIDisposableの罠

この記事には修正版があります。 この記事は修正前にこの記事を読んだ方が修正箇所を確認するためにあります。 初めてこの記事を読む方は修正版をお読みください。 www.f-sp.com UnityとIDisposable絡みのバグで一日悩んだのでメモ。 IDisposableというより…

【Unity】 誰得なEditorPrefs操作スクリプト

前回の記事でEditorPrefsの値をレジストリエディタでいじるのが面倒だったので書いた、誰得なPowerShellスクリプトを公開。 正直このスクリプト書くのが一番面倒だった。 ちなみに取得・削除はできますが、作成・変更はできません(必要だという稀有な方は自…

Unityのエディタ拡張で設定を保存

Unityのエディタ拡張にてプロジェクト間で共有する設定の保存がしたくなり、いろいろ試したのでその記録。 はじめに 準備 シンプルな方法 利点と欠点 JSON化して保存する方法 利点と欠点 JSON化して保存する方法 その2 利点と欠点 おわりに はじめに Unity…

【Unity】 Rigidbodyの移動方法

Rigidbody(剛体)の移動に関してまとめたいい日本語の記事が見つからなかったので書いてみる(検索に引っかかりづらいだけ?)。 物理は詳しくないので基本的なことだけ。 Rigidbodyの移動 Rigidbodyの基本的な移動方法には次の四つがあります。 position v…

【Unity】 Timeクラス詳説

Timeクラス関連で調べものをしていたのですが、 詳しいことがまとまっているサイトが見当たらなかったので自分でまとめてみました。 Timeクラスのプロパティ一覧 Timeクラスのプロパティ分類 時刻取得系 time fixedTime unscaledTime realtimeSinceStartup t…

【Unity】 IL2CPPメモ

IL2CPP (Intermediate Language to C Plus Plus) 以前IL2CPPについての記事を書こうと思って、とっていたメモがあったので公開。 メモ書きなのでわかりづらいのはご容赦ください。 本当は内部実装の話も含めて、シリーズで書こうと思っていたのですが、 英語…

Unityのエディタ拡張で頂点変換を可視化

久しぶりのブログ更新。 せっかくなので何か楽しそうなことをしたいと思い、 頂点が行列によって変換されていく様子をアニメーションさせてみました。 これで初学者も頂点変換が理解できる・・・かもしれない。 頂点変換アニメーション こちらからソースコー…

【Unity】Stripping Levelについて

前回の記事を書いた後で自分の書いたことが本当にあっているのか心配になってきたのでいろいろと調べなおしてみました。 わかったような気になっていたけど結構わかっていないもんで・・・ そして結局この記事の結論としてもようわからんかったという内容な…