タグ

ブックマーク / www.f-sp.com (12)

  • 【Unity】 ECS『を』実装しよう - エフアンダーバー

    ECSの記事は徐々に増加しており盛り上がりを見せていますが、 それでもやはりECSとは何かよくわからないという声は多く、 なればその仕組みを紐解くべく自前で実装してみよう……という建前の思いつき記事です。 これを読んでUnity ECSが使いこなせるようになるかは知りませんが、 250行程度のソースコードで原始的なECSをUnityライクに実装してみたので、 ECSの発想自体は極めて簡単なんだな、と感じてもらえれば幸いです。 以前書いたECS関連の記事は硬めの内容になりがちだったので、今回はもう少し緩い感じでいこうと思います。 【2020/05/31】 0.11.0に対応。 はじめに ECSとは いざ、実装 エンティティを表現しよう コンポーネントを表現しよう システムを表現しよう エンティティを管理しよう コンポーネントを管理しよう 世界を構築しよう エンティティを列挙しよう 実行してみ

    【Unity】 ECS『を』実装しよう - エフアンダーバー
  • 【Unity】 ECS まとめ(前編) - エフアンダーバー

    前にUnityのECSについて調べて記事を書きましたが、 おそらく今後しばらく使うことはないと思われるので、 忘れないうちに現状のUnity ECSについてまとめておくことにします。 www.f-sp.com ……という動機で記事を書き始めたのですが、 なんやかんやで片っ端から調べなおし、 まとめと呼ぶには長すぎる記事になりました。 多分、現時点での内容はだいたい網羅していると思います。 【19/05/06 更新】0.0.12-preview.31に対応。 【19/05/29 更新】0.0.12-preview.33に対応。 【19/09/25 更新】0.1.1に対応。関連記事へのリンクを追加。 【20/06/15 更新】0.11.0に対応。全体的に記述を変更。 ECS (Entity-Component-System) とは? Unity ECS の基 インストール アーキタイプとチャ

    【Unity】 ECS まとめ(前編) - エフアンダーバー
  • 【Unity】 ECSへ 思考の移行ガイド - エフアンダーバー

    前回書いたECS記事はなかなか好評だったみたいで、ありがたいことに日の公式にもツイートしていただきました。 www.f-sp.com しかし一方で、反応を見ているとECSに対して否定的な意見が多く見られました。 内容から推察するに、おそらく前回記事が機能の説明に寄り過ぎるあまり、 具体的にどう使ったものかわかりづらいのが原因じゃないかと思ったので、移行ガイドを書くことにしました。 移行ガイドといっても、実際のプロダクトを移行するための手順というよりは、パラダイムシフトを促すための説明です。 【2020/06/15】 0.11.0に対応。一部記述を微修正。 はじめに オブジェクト指向からECSへ オブジェクト指向への懐疑 関数型プログラミング 参照透過性と純粋関数 関数型における状態 関数型とのつきあいかた データ指向とECS ECSの利点 ここまでのまとめ 旧アーキテクチャからECSへ

    【Unity】 ECSへ 思考の移行ガイド - エフアンダーバー
  • 【Unity】 ECSだけしかいない世界 - エフアンダーバー

    今更ながらUnityのECSについて学習したので、ECSで簡単なゲームを作ってみました。 巷ではECSが一種の高速化手法のように使われているサンプルが多いので、 ECSはアーキテクチャなんだぞ、ということを示すためにGameObjectとComponent禁止縛りで書くことにしました。 いわゆるPure ECSですが、今回はシーン内のGameObjectを全て削除するためCameraも使用禁止です。 ついでにECSとセットで語られがちなC# Job Systemも見かけ上*1禁止しておきます。 当然Burstコンパイラも使いません。 ECSとその他のあれこれをごっちゃにしないためのサンプル……ということにでもしておきます (そこまで考えて作ってなかったけど)。 <19/04/17 更新> Unity 2019.1とECS preview.30対応のコードに更新。補足へのリンクを追加。 <1

    【Unity】 ECSだけしかいない世界 - エフアンダーバー
  • 【Unity】スプライト端の謎の線/ゴミ/ちらつきの修正方法 - エフアンダーバー

    Unityで何気なくスプライトを使っていると上下左右に現れる謎の線。 時としてゴミのような点として現れたり、画面が動いている間だけ現れたりもします。 さらには普段は出ないのに画面サイズ(解像度)が変わったときだけ出てきたりと、とにかく厄介なやつです。 ニコニコの自作ゲーム動画とかを見ていると結構悩まされている人が多いようなので、 自分の知っていることについて書いておきます。 グラフィックの専門家ではないので「これをすればもう大丈夫」とまでは言えないのですが、 この現象で困っている人は一度試してみると問題が解消されるかもしれません。 【追記 2016/11/25】コメントにてご指摘いただいたスプライトパッカーについての説明を追加。 スプライト端の線 原因 シンプルな解決法 スプライトパッカー(Sprite Packer)の使用 【追記】 原因そのものの解決法 テクスチャ補間の設定 アンチエイ

    【Unity】スプライト端の謎の線/ゴミ/ちらつきの修正方法 - エフアンダーバー
  • UnityとIDisposableの罠 【修正版】 - エフアンダーバー

    この記事について 先日投稿した記事について再検証したところ、間違いや勘違いが多数見つかったため修正版を投稿します。 また、その際にいくらか細部について理解できた部分があるため、それらについて追記しています。 内容は大部分が元記事と重複しています。 元記事を読んでいない方が読みやすいよう、修正点についてはこの記事には記述しません。 修正箇所の確認は元記事をご参照ください。 www.f-sp.com UnityとIDisposable絡みのバグで一日悩んだのでメモ。 IDisposableというよりもファイナライザ(C#的にはデストラクタ)の問題なのだけど、 ファイナライザの主な用途がIDisposableだと思うのでこのタイトルで。 はじめに IDisposableはC#ではお馴染みのインターフェースで、 メモリなどのリソースを明示的に解放する必要がある場合(あるいは明示的に解放することに利

    UnityとIDisposableの罠 【修正版】 - エフアンダーバー
  • Unityのリソース管理 - エフアンダーバー

    前回の記事や次回の記事を書くにあたってUnityのリソース管理についていろいろ調べたのでメモ。 前回の記事を書いたときも思ったのだけど、「リソース」ってどの範囲を指す言葉だろう。 「オブジェクト」とか「メモリ」とか他の言葉を使うことも考えたのですが、どれが正解かわからず、とりあえず「リソース」を使ってます。 まあ表現はともかく今回は、Unity内部でのUnityEngine.Objectの管理の話です。 表現がおかしかったら適宜読み替えてください。 はじめに Unityのエディタ拡張を書いていると、変数の値が突然nullになるなど、おかしなバグに悩まされることがあります。 HideFlagsなどこれらの動作を制御できるものが存在することは以前から知っていましたが、 スクリプトリファレンスを読んでもいまいち理解できなかったので、 実際にいろいろと設定しながら調べてみました。 あらかじめ断って

    Unityのリソース管理 - エフアンダーバー
  • 【Unity】 EditorWindowのライフサイクルの謎 - エフアンダーバー

    EditorWindowが他のGUIアプリケーションと比べてかなり特殊な挙動をするのでその辺について。 前回の記事や 前々回の記事は このあたりを調べている過程で学習したことです。 はじめに EditorWindowクラスを継承してカスタムウィンドウをつくっていると、 思わぬタイミングで変数の値が変わったりなど、 通常のGUIアプリケーションではありえないような挙動をすることがあります。 そこで、EditorWindowクラスのイベント関数が呼び出されるタイミングについて調べてみました。 EditorWindowクラスのイベント関数にもいろいろありますが、 今回はライフサイクルに大きくかかわる次の三つについて調べます。 OnEnable OnDisable OnDestroy 調査用スクリプト EditorWindowを継承したカスタムウィンドウクラスを定義し、デバッグ出力を見ます。 コー

    【Unity】 EditorWindowのライフサイクルの謎 - エフアンダーバー
  • Unityのエディタ拡張で設定を保存 - エフアンダーバー

    Unityのエディタ拡張にてプロジェクト間で共有する設定の保存がしたくなり、いろいろ試したのでその記録。 はじめに 準備 シンプルな方法 利点と欠点 JSON化して保存する方法 利点と欠点 JSON化して保存する方法 その2 利点と欠点 おわりに はじめに Unityのエディタ拡張を書いているとプロジェクト間で設定を共有したくなることがあります。 こんなときによく紹介されるのがEditorPrefsクラスです。 EditorPrefsは"Editor Preferences"の略で「エディタ設定」の意味です。 ゲーム製作時に使うPlayerPrefsクラスは有名かと思いますが、これのエディタ版です (たまにPlayerPrefsクラスをゲームデータのセーブに使う人がいますが、 これも"Player Preferences"の略で「プレイヤー設定」の意味なので、設定以外には使わないのが賢明で

    Unityのエディタ拡張で設定を保存 - エフアンダーバー
  • 【Unity】 Timeクラス詳説 - エフアンダーバー

    Timeクラス関連で調べものをしていたのですが、 詳しいことがまとまっているサイトが見当たらなかったので自分でまとめてみました。 Timeクラスのプロパティ一覧 Timeクラスのプロパティ分類 時刻取得系 time fixedTime unscaledTime realtimeSinceStartup timeSinceLevelLoad フレーム間時間取得系 deltaTime fixedDeltaTime unscaledDeltaTime smoothDeltaTime フレーム数取得系 frameCount (renderedFrameCount) 設定系 fixedDeltaTime timeScale maximumDeltaTime captureFramerate 経過時間の計測 現時刻と開始時刻の差を計算 フレームにかかった時間の総和を計算 おわりに Timeクラスのプロ

    【Unity】 Timeクラス詳説 - エフアンダーバー
  • 【Unity】 IL2CPPメモ - エフアンダーバー

    IL2CPP (Intermediate Language to C Plus Plus) 以前IL2CPPについての記事を書こうと思って、とっていたメモがあったので公開。 メモ書きなのでわかりづらいのはご容赦ください。 当は内部実装の話も含めて、シリーズで書こうと思っていたのですが、 英語を読むのと元記事の古い部分の修正が面倒になったので中断中。 いつの日か、またやる気がでたら書くかも? IL2CPPについて 記事は以下のUnity公式ブログの内容をまとめたものです。 けっこう古い記事なので、現在の内容とは異なる可能性があります。 https://blogs.unity3d.com/2014/05/20/the-future-of-scripting-in-unity/ 現状の問題点 C#の実行速度はまだC/C++に劣る Unity内部のMonoのバージョンが上げられない つまり、最

    【Unity】 IL2CPPメモ - エフアンダーバー
  • 【Unity】Stripping Levelについて - エフアンダーバー

    前回の記事を書いた後で自分の書いたことが当にあっているのか心配になってきたのでいろいろと調べなおしてみました。 わかったような気になっていたけど結構わかっていないもんで・・・ そして結局この記事の結論としてもようわからんかったという内容なのですが、せっかく調べたので書いておきます。 前回の記事 www.f-sp.com Stripping Levelとは? Stripping LevelとはiOSやAndroidといったモバイル向けの最適化オプションです。 Edit > Project Settings > Player からプレイヤー(ゲームの実行エンジン)設定を開き、 iOSまたはAndroidのタブでOther Settingsカテゴリ内のOptimizationサブカテゴリに項目があります。 最新のUnityを利用している場合には項目が見当たらないかもしれませんが、 その場合には

    【Unity】Stripping Levelについて - エフアンダーバー
  • 1