テラシュールブログ

旧テラシュールウェアブログUnity記事。主にUnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。

ScriptableObject

【Unity】特別なコードをあまり書かずに "別シーン内のオブジェクト" へアクセスするアイディア

Unityで別オブジェクトの情報を取得したり操作する上で、最も簡単な方法はInspectorに露出して参照先をセットすることです。 ただ、このアプローチはシーンを分割する事になると厄介です。UnityのSceneは別のSceneのオブジェクトに対してアクセス出来ないの…

【Unity】Unity非対応のフォーマットを対応アセットのようにする、ScriptedImporterという機能

Unityが標準機能的には非対応なフォーマットのデータをインポートした際、まるで対応フォーマットのようにファイル自体をアセットとして使用可能にする「Scripted Importer」という機能の紹介です。

【Unity】PrefabにScriptableObjectを格納する

今回はPrefabにScriptableObjectを格納する話です。 ScriptableObjectを使うと何が良いの? SriptableObjectをPrefabに格納してしまおう サンプル Tips ScriptableObjectを使うと何が良いの? Prefabをインスタンス化する場合、コンポーネントの複製が行われ…

【Unity】ScriptableObjectを使用した、コンポーネント・シーン間でのデータ共有について

今回はScriptableObjectを使用したComponentやScene間でのデータ共有についてです。なお、この記事は30回近く書き直した*1という曰く付きの記事で、場合によっては消えるかもしれません。 ScriptableObject ScriptableObjectはアセットでありインスタンスで…

【Unity】ボタンを押したら音が出る…を、出来る限りコードを書かずに実現する

今回は、ボタンを押した際に音を出す方法を聞かれたので、ココにも書いておきます。音の制御というよりは「ボタンを押した時に音を出したい」という要望を叶える為の物です。 ボタンを押したら音が出る Audio Soureceはスピーカー、Audio Listenerは耳 Audio…

【Unity】公式の「テキストベースなアドベンチャーゲーム」を作るチュートリアル

先日、ついにUnity公式のテキストベースなアドベンチャーゲームのチュートリアルがチュートリアルムービー一覧に追加されました。 「テキストベース」なアドベンチャーゲーム テキストベースなアドベンチャーと言えば、現状日本製のモバイル・コンソール(AA…

【Unity】コンポーネントのイベント実行順についてのTips

GameObjectにアタッチしたスクリプトの実行順番は、特に何もしなければ割とランダムです。今回はその辺りについて少し整理します。 スクリプトの実行順番 スクリプトの実行順を制御する Script Execution OrderをGUIで設定 メタデータに直接書き込む Default…

【Unity】Unityエディタで変更したプレハブを更新「しない」方法

UnityエディタはPrefab・ScriptableObjectといったアセット、Animationの制御等、いくつかの*1情報をUnity側が保持するフォーマットによって管理します。 これらの情報は「シーンの保存」や「Editor>Save Project」、「エディタの終了」等いくつかの要因で実…

【Unity】プロジェクト内のScriptableObjectを見つける方法

エディタ拡張でエディタ機能を拡張している際、データを保存したくなる事が多々あります。そこでScriptableObjectが大活躍する(ハズ)なのですが、プロジェクト内の「特定のフォルダに格納」といった扱いは微妙にイケていない気がします。 凄く手っ取り早い…

【Unity】シーン間でスコアを共有 まとめ

Unityの特性として「シーン遷移(LoadLevel)時にオブジェクトを破棄」します。このため、オブジェクトにデータを持たせている場合は破棄されてしまします。 しかしシーン内で解決する問題だけでなく、ゲームの進行では必ずといってよいほどシーン間のデータ…

【Unity】ゲーム起動直後に1度だけ処理を行う

ゲーム起動時に1度だけ処理を行います。 サンプル 今回は解像度を半分にする処理に使用します。これはStartやAwakeでやった場合、そのコンポーネントを持つオブジェクトが呼ばれるたびに解像度が半分になる…といった挙動になるためです。なので1回しか起動し…

【Unity】ScriptableSingletonでエディタウィンドウ間の情報共有

目次 目次 エディタは値を忘れる ScriptableSingletonを使う 感想 エディタは値を忘れる Unityエディタは実は物忘れが激しいです。 何が言いたいかと言えば、エディタウィンドウ等で使用されているstaticな変数を「ゲームの再生時やコンパイル時に忘れる」と…

【Unity】ScriptableObjectのコールバックが呼ばれるタイミングについて

ScriptableObjectのOnEnableが呼ばれるタイミングについてです。 PreloadAssetsに設定した場合 ゲーム起動直後に呼ばれます。シーンのロードすらされていないため、OnEnableでFindをかけても何も取得することは出来ません。 ちなみにエディタ起動時にも呼ば…

【Unity】ScriptableObjectを使用して、Scene間・Object間のデータ共有を行う

今回はScriptableObjectを利用してデータの共有を行う方法を紹介します。 この方法は「Find系が不要」かつ「事前にデータを定義する事が可能」で「Awakeが呼ばれる前にセットアップが完了」し「オブジェクト間・シーン間でデータが共有できる」といった扱い…

【Unity】UIだけ表示するScene Viewを作った

UIだけ表示するシーンビューを試しに作ってみました。右上の画面がUIのみを表示するシーンビュー、左上がUIを表示しないシーンビューです。 UnityでUIのみシーンビューとUI以外シーンビューとゲームビュー pic.twitter.com/wByCx29Po3 — 椿 (@tsubaki_t1) 20…

【Unity】エディタ拡張が「private」なメンバにアクセスする、多分一番楽な方法

Unityで「エディタからのみ外部アクセス可能なメンバ変数」を実現する方法の考察 - Qiitaqiita.com エディタ拡張が「private」なメンバにアクセスする、多分一番楽な方法についてです。この方法はEditor外にも処理を書かなければいけないので良くないですが…

Unity5 MecanimのStateMachineBehaviourと戯れる

Unity5で唯でさえややこしいMecanim(アニメーション管理システム)に新しくStateMachineBehaviourが追加されました。 この機能はMecanimのステート管理機能の各ステートに振る舞いを設定できる機能です。各ステート毎に振るまいを設定することで、コンポー…

UnityのGameObjectを非アクティブにするとAnimatorがリセットされる挙動、その対処法

新しい対処法はこちら tsubakit1.hateblo.jp --- マニュアルに書いてあったか記憶が微妙なのですが、UnityのAnimatorはGameObjectが非アクティブになるとリセットされます。 ここで言うリセットとはアニメーションが最初に戻るだけ等の生易しい物ではなく、…

ScriptableObjectについて

ScriptableObjectとは何かと色々と悩んできましたが、答えは簡単でした。データを格納するオブジェクトです。もう少し言えば、Unityがデータをシリアライズ・デシリアライズしパラメータを格納するための仕組みです。色々な事が出来る割に用途が分かりにくい…

ScriptableObjectを更新させない

最新版 tsubakit1.hateblo.jp ScriptableObjectを使用する場合、ScriptableObjectのパラメータを更新するとベースの値も更新されてしまう。対策として値を変更するScriptableObjectを使用する場合はGameObject.Instantiateで一回生成したものを使用する。 pu…

作成したScriptableObjectを呼び出す

そういえば[Unity]Excelでデータを管理してUnity iOS/Androidで使うワークフローをノーコーディングで使えるようにした等でScriptableObjectを作る方法を紹介したが使う方法を紹介していなかったので、紹介。ScriptableObjectについては[Unity]ScriptableObj…

Unity-Excel-Importer-Maker 配列型に対応

Unity-Excel-Importer-Makerで配列型をサポートした。 変数名と入力している場合、その項目を結合して配列として扱う。Unity-Excel-Importer-Maker[Unity]Excelでデータを管理してUnity iOS/Androidで使うワークフローをノーコーディングで使えるようにした…

Excelでデータを管理してUnity iOS/Androidで使うワークフローをノーコーディングで使えるようにした

以前紹介した「Excelでデータを管理して(中略)ワークフロー」に「助かりました!」の声があったのが嬉しかったので、それのソースコードを作成する部分を自動化した。(我ながら単純!!)これで、すごく簡単にXLSファイルのデータをUnityに持ってくる事が…

エディタでゲーム再生中に変更した値を停止しても消さない方法

Unityはゲーム再生中のデータを残せない。例えばPushを押す度にカウントが+1されるプログラムを組む。それをシーンに配置し、ゲームを再生前は0のカウントをプレイ中に5まで増やしたとする。その後再生を停止させてしまうと0に逆戻り、5から進行することは出…

アプリサイズを減らす その3

アプリサイズを減らす その2で紹介した方法(StreamingAssetsに配置する)だが、どうやらAndroidでは若干安定度に難がある。で、もう少し良い方法を思いついた。[Unity3D]iosアプリサイズを節約する http://tsubakit1.hateblo.jp/entry/20120512/1336773155…

Excelでデータを管理してUnity iOS/Androidで使うワークフロー

前回の応用で、Excelの中身をScriptableObjectとして保持するようにした。tsubakit1.hateblo.jpより良い方法があったので、そちらをどうぞ。 tsubakit1.hateblo.jpExcelみたいなデータとして大きく効率が悪いフォーマットからランタイムで引っ張ってこようと…

UnityでExcel(xls)を使う Excel Data Reader - Read Excel files in .NET

excel?好きだよ。最高に幸福なツールですよね。方眼紙は最高だし、お絵かきツールとしても好きだ。画像をD&Dで貼り付ければ簡単にクソ重い画像を添付できるし、複数のページに渡って管理もできる。よく壊れる事に定評のあるバージョン管理機能だってあるし…

ScriptableObjectのhideFlagをリセット

ScriptableObjectはGameObjectと違い「ゲーム実行時」の情報を保持する。しかし、ゲーム実行時はデータを更新してほしくない場合はHideFlagsにDontSaveを指定することで実行時のゲーム状態を保存しないようにも出来るらしい。 (ただし、インスタンスが即破…

ScriptableObjectの使い方

以前こんな記事を書いていたが、やっとScriptableObjectの用途が見えてきた気がする。 tsubakit1.hateblo.jp とりあえずScriptableObjectのアセット化(Projectビューに配置)する方法が分かったので、複数のシーン・オブジェクトで共有して使うシリアライザ…