読者です 読者をやめる 読者になる 読者になる

テラシュールブログ

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

UnityのuGUIでボタンと一緒に後ろのオブジェクトが押されないようにする

UnityのuGUIのボタンを押した際、背面にあるオブジェクトも一緒に押されるケースの対策について紹介します。 これを回避するには、EventSystems.EventSystem.IsPointerOverGameObjectでボタンを選択中か判定し、選択中なら押さない事にする…といった形で修正…

シーンビューのオブジェクトをタップしても選択できない

最近シーンビューのオブジェクトを選択しようとした際、何故か上手く選択できないケースが発生しました。 これはどうやらCanvasを選択してしまっている為に発生していました。Hierarchyビューをよく見ると、ボールを選択したつもりがCanvasがアクティブにな…

Unityの2DやuGUIのパフォーマンス最適化についての7つのTips

最適化というか、改善する話です。 モバイル向けに作った時に妙に遅かった場合、この辺りの要因が絡んでいるケースが多い印象です。この辺りは作る際に確認しながら作ると、後々痛みが少なくて良いかなと思います。 目次 目次 プロファイラで確認する エディ…

UnityのuGUIとImageとSpriteとスライスについて

uGUIのスライスは覚えておくと便利な機能です。 今回はコレを作ろうと思いましたが、スライス部分が予想以上に色々と出来たので分割します。コレの作り方は次回。 目次 目次 スライスする方法 大きさを調整する 真ん中を塗りつぶさないでフィルレートを節約…

UnityのuGUIでコンボボックス(或いはドロップダウンリスト)を作る

UnityのuGUIには現状コンボボックスが無いです。それは作ろうと思えば作れますが、正直面倒なのでコミュニティのナレッジより拝借します。 A working, stylable combo box (drop down list) | Unity Community A working, stylable combo box (drop down lis…

UnityのuGUIでアナウンス的な表現を作ってみる

以前にもチラっと紹介しましたが、改めてuGUIでのアナウンス表示の作成について紹介しておきます。 内容はこんな感じです。 逆引き、UnityのuGUIのレイアウトトレーニング(uGUI RectTransform入門その2) - テラシュールブログ 逆引き、UnityのuGUIのレイ…

UnityのuGUIで複数のスクロールビューを切り替える演出の作り方

FacebookのUnity助け合い所で質問があったので、ちょっと書いておきます。(件の問題は解決済み) とりあえず、こんな感じのを作ります。今回はボタンで制御しますが、画面端からのスワイプやスクロールバー自体のスワイプといったギミックで差替えても良い…

UnityのuGUIで「UIのアニメーション制御」

目次 目次 UnityのuGUIで「UIのアニメーション制御」 uGUIでアニメーション アニメーションの作成手順 画面の準備 AnimatorとAnimationClip作成 キーフレームの登録 AnimationControllerの設定 AnimationControllerをスクリプトで制御する 感想 ライセンス …

Unity ローグライクなゲームのチュートリアルが公開された

Unityのチュートリアルでローグライクのゲームが公開されたみたいです。 内容は英語ですが、Google翻訳の字幕しながら見れば大体わかるような内容です。日本語字幕の表示は本家の動画チュートリアル Learn に書いてます。 ゲーム内容はターン制のローグライ…

UnityのuGUIで階層構造を持ったスクロールビューを作る

目次 目次 階層構造を持ったスクロールビュー ソースコード 使い方 感想 階層構造を持ったスクロールビュー 今回はスクロールビュー(横)の中にスクロールビュー(縦)があるような構造のスクロールビューを作成します。 uGUIは子がScrollRectを持っている…

Unity uGUIでスライダーについて解説してみる

uGUIのスライダーについて解説します。 目次 目次 スライダーの作り方 スライダーの範囲調整 画像の調整 挙動の調整 スライダーの作り方 スライダーを作るにはCreate>UI>Sliderを選択します。 スライダーの範囲調整 スライダーは合計6個のオブジェクトで構成…

逆引き、UnityのuGUIのレイアウトトレーニング(uGUI RectTransform入門その2)

RectTransformの座標指定についてです。 内容は以前に書いた入門の焼き直し+αです。理屈については大体書いてるので、そっちを参考にしてくれると助かります。 UnityのuGUIのレイアウト調整機能について解説してみる(RectTransform入門) - テラシュールブ…

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

マニュアルに書いてあったか記憶が微妙なのですが、UnityのAnimatorはGameObjectが非アクティブになるとリセットされます。 ここで言うリセットとはアニメーションが最初に戻るだけ等の生易しい物ではなく、パラメータの持つ値やトリガー状況、アニメーショ…

UnityのCollider2DやColliderに対してクリックやドラッグのイベントを使う

Unity4.6よりUnityにはEventSystemが追加されました。これは例えばドラッグやクリックといった基本的な挙動を登録することが出来ます。 例えばダブルクリックを検知するコード。 // ダブルクリックを検知する これをColliderがアタッチされているオブジェク…

UnityのuGUIのクリック範囲を広げたり制限したりする方法

Unityのボタンは画像の範囲でクリック判定を行います。 この範囲は基本的にGraphicクラスが表示されている範囲に適応されます。要するに「画像が表現されている範囲(の四角)」に適応されます。 この当たり判定の範囲を絞るには、ICanvasRaycastFilterを使…

Unityで画面の指定位置にモデルを移動させる

先日ゲームジャムでメンバーの一人が「3Dモデルを特定の位置に移動」させる事に四苦八苦していたので、作った。スクリプトを。 このスクリプトは指定したスクリーン座標へモデルを移動させる為の物です。スクリーン座標的に(x:45, y:0)の位置へモデルを移…

UnityのuGUIで無限にスクロール出来るスクロールビューを作る

使い方 アイテムの内容調整 制限付きスクロールビューのやり方 以前UnityのuGUIでスクロールビューを作る方法を紹介しました。 UnityのuGUIでスクロールビューを作る - テラシュールブログ UnityのuGUIでスクロールビューを作る - テラシュールブログ 今度は…

Unity 2DのPolygonColliderの超点数を減らす

Unity 2DのPolygon Colliderを使うことでSpriteが使用するテクスチャの形状にそって当たり判定を設定する事ができます。 このPolygonCillderはソコソコ綺麗に当たり判定を設定してくれるのですが、少しやり過ぎる感があります。例えば上のGIFアニメで使って…

Unityでカラーパレットを使う

UIやゲームを構築する際、色調は非常に重要です。この色調ですが、毎回毎回パレットを感覚で調整するのも中々に大変なので(とうか無理なので)、カラーパレットとして利用する色のパターンを登録してしまう方法を紹介します。 まず調整用の色調ですがカラー…

UnityのSpriteとパーティクルとかモデルの描画順番について

Unityのスプライトの描画順は「SortingLayer、Order In Layer、Z値」の順番で設定します。 このSortingLayerですが、実はLineRendererやParticleRenderer、Trail RendererといったSpriteRenderer以外にも適応されます。正しくは透明やブレンドを利用するレン…

フォントに含まれない文字を使うときの動作

UnityはテキストのフォントとしてArialやその他ttfフォーマットのフォントを使用して文字を表現します。しかし、この手のフォントには全てのフォントは含まれていません。 そんなときの挙動として、Unityはフォールバックしてデバイスに含まれるフォント(所…

UnityのuGUIのテキスト表示機能について解説してみる

UnityのuGUIでテキスト表示の扱いについて解説します。 目次 目次 Textの機能 文字のエフェクト 自動改行と禁則処理 フォントサイズと描画範囲 フォントがぼやける問題(uGUIの場合) Textの機能 TextはuGUIでテキストを表示する機能です。 作成するには、以…

Unity 2DやUIで、「テクスチャにRGBA16指定した時に透ける」問題を回避する方法について

問題 どうも「テクスチャのフォーマットがRGBA16」の「透過色を持つ画像」を使用している場合、テクスチャの色に少し透明が追加され、後ろにあるテクスチャの描画結果が薄く前面に表示されてしまうバグがあるみたいです。 Unity Issue Tracker - Using Direc…

Unityの新GUI、UGUIのイベント制御について

Unityの新GUIシステム、(通称)UGUIのイベント制御について紹介します。 エディタのGUI上での設定 ソースコードでの操作 エディタ操作をスクリプトで設定 参考 関連 エディタのGUI上での設定 UGUIのボタンのコールバックは、AnimationEventのようにオブジェ…

UnityのuGUIのレイアウト調整機能について解説してみる(RectTransform入門)

uGUIのレイアウトシステムの調整機能…の基礎であるRectTransformの調整についてについて解説します。今回はGUIで触れる範囲。 目次 目次 Pivot(中心点)の設定 Pivotを動かす Pivotの挙動 Anchorの設定 アンカーとUIのサイズ 画面サイズ(親サイズ)とアン…

UnityのuGUIでスクロールビューを作る

Unity4.6で追加したuGUIでスクロールバーを作る方法について紹介します。 大体こんな感じのスクロールバーを作ります。 作り方 まず、リストに表示するノードのプレハブを用意していきます。 適当な横長のImageを用意します。名前はNodeとします。 左の方に…

Resourcesフォルダからパック済みSpriteを取得する際、文字列検索ではなくenumで呼び出したい

Resourcesからスプライトを取得する際、普通はいかのように入手する必要があります。これは、単純にパック済みスプライトの一つを抜き出すことが出来ないためです*1。取り方は以下のとおり。 // [Unity] Resourcesに配置したパック済みのSpriteを取得する Re…

uGUIのアスペクト比を固定する(修正版)

以前uGUIのアスペクト比固定方法について記載しましたが、バージョンアップに伴い方法が変更されていたので新しい方法を書いておきます。 アスペクト比の固定 アスペクト比の固定は所謂レターボックスと呼ばれる手法を使用します。また、厳密にはアスペクト…

uGUIでノベルゲームのようなものを作る、その2 コマンドによる挙動の管理

uGUIでノベルゲームのようなものを作る…の続きです。 今日はコマンド周りをやります。 uGUIでノベルゲームのようなものを作る。その1 - テラシュールブログ uGUIでノベルゲームのようなものを作る。その1 - テラシュールブログ シナリオをテキストファイル…

uGUIでノベルゲームのようなものを作る、その1 UIの表現と文字表現

uGUIを使ってノベルゲームというか会話シーンを作る方法を紹介していきます。 実際は「宴」とか「ジョーカースクリプト」とか使うお勧めです。 というか、この記事は「手軽にノベルゲームとかRPG作るとか言うけど、その手のシステムをスクラッチするのは簡単…

Unityで2Dのボリュームライト表現

ボリュームライトとは、コンサートや車のヘッドライトで見える光の軌跡です。 Unityでボリュームライト表現やレンズの汚れ表現 - テラシュールブログ Unityでボリュームライト表現やレンズの汚れ表現 - テラシュールブログ 以前、これをやるために頑張って2…

Animatorがリセットされるケース

Animatorはノードベースの状態遷移をスクリプトを使わず制御出来るため便利な機能ですが、いくつかの条件でリセットしてしまうみたいです。 Animatorを持つGameObject自体をDeactiveにする runtimeAnimatorControllerを更新する AnimatorのEnable/Disableで…

横スクロール2Dアクションゲームを作るのに便利そうなPlatformerCharacter2Dの使い方

今回は、2DキャラクターをコントロールするPlatformerCharacter2Dの使い方について紹介します。 このコントローラーでは、キャラクターは左右への移動・ジャンプ・伏せ前後といった挙動をサポートしています。もちろんコードを改造して2段ジャンプといったギ…

UnityのuGUIのUIにシェーダーを適応する

uGUIのUIは今までのUIと違い、独自のシェーダーを適応することが出来ます。例えば、下のように「y軸で縞模様を作る」のようなエフェクトを付与・動的に変更する事が出来ます。 やり方は単純です。 まずUnity 4.6のダウンロードページからBuilt-in Shaders fo…

AssetStoreの2D素材

今回はAssetStoreに2D素材についてです。 知らないのか使い方が分からないのかは判断出来ませんが、活用せず適当なGUIを使用している人が結構居る気がするので、今回はそのアセットの探し方について紹介します。 「それなりのゲーム」に見える指標の一つに間…

スプライトにエフェクトを付ける

uGUIでは、文字にアウトラインや影を付けることが出来るようになりました。 やり方は簡単で、Textコンポーネントと同じオブジェクトにAddComponentで「UI>Effects>Outline」や「UI>Effects>Shadow」を追加するだけです。 実はコレ、文字じゃなくても使えます…

Bloomで光の演出

今回はBloomによる光の演出について紹介します。 ※この記事はUnity4向けです。Unity 5はこちら tsubakit1.hateblo.jp 単純にオブジェクトを輝かせたい場合、Bloomが楽です。例えば、以下のように機能します。*1 Bloomはアセットストアに色々とありますが、と…

uGUI の 使い方(β) 〜Canvas周り〜

※この記事の内容は古い(ベータ版のみ有効)です。 新しい方法 uGUIのアスペクト比を固定する(修正版) - テラシュールブログ uGUIのアスペクト比を固定する(修正版) - テラシュールブログ uGUIの使い方について紹介します。*1 今回はキャンバス周りにつ…

Unity 4.6オープンβスタート。新GUI「uGUI」の試用が可能に

Unity の新UIシステムである(通称)uGUIが追加された最新のUnity 4.6オープンβが開始されました。 Unity - Beta - Unity 4.6 使い方については、チュートリアルが提供されています。 チュートリアルでは、ボタン・テキスト・レイアウトといった基本的な機能…

Resourcesから非同期でインスタンス化する

Unity 4.5.3よりResources.LoadAsyncが追加されました。これは今までResources.Load時に停止させていた時間を停止させず、非同期でロードする命令です。 しかし、実際にコレを扱ってみて失望するかもしれません。理由は簡単で、非同期で読んでいるハズなのに…

Unityの複数解像度の表示結果を一覧で確認する…の使えない方

今日は全く何の役にも立たないTipsを紹介します。 ゲームを開発していると、複数の解像度を使用したくなるケースがあります。例えば、縦画面と横画面を同時に開発している際、どのように動くか等です。 実はこんな事ができたのです。 やっている事は単純で、…

UnityのベクトルとQuaternionによる回転について

Quaternionでベクトルを回す Quaternionの加算 Quaternionを求める サンプル その他 Quaternionは回転情報です。transform.rotationに格納されています。 このQuaternion(回転)ですが、Vector3(ベクトル)と合わせると、Vector3を回転させる事ができます…

Unityでスローモーション

ゲームを作る上でスローモーションを行いたくなるケースがある。 その場合はUnityでストップやスローモーション・早送りを実現するにはのように、Time.timescaleで時間を停止・加速させてしまうのは手っ取り早い。少なくともAnimationで挙動を制御している場…

Unityでアスペクト比率を固定する

n番煎じですが、Unity/基本形/025 画面のアスペクト比を固定にする や Unity そのアスペクト比を固定するぞ・・・っ! を参考にアスペクト比率を固定するスクリプトを作成した。他と違うのは、背景を塗りつぶすようのカメラの配置を自動化している点だけです…

Unityでポケモン風ゲームを作る上で参考になりそうなアセット・資料を探してみる

どうも @tsubaki_t1 です。 コメント欄に「ポケモンのようなRPGのサンプルとなるコード・アセットがあれば紹介して欲しい」旨のコメントが来ていたので、少し探してみます。 まず「ポケモンのようなRPG」について少し考える。ちなみに自分の知識は「赤・緑」…

Unityでドット絵の1ドット単位移動

「ドット単位の移動」なる物についてTwitterにて話題があったので やり方を書いておこうと思う。今回は、レンダリング直前にドット絵的に中途半端な位置にあるオブジェクトの位置を補正し、レンダリング後に元に戻す方法を紹介する。 画面左はスムーズに動く…

Unityで特定のオブジェクトをシーンビューから選択出来ないようにする

意外と知られていないことだが、シーンビューからオブジェクトを選択不可にする方法は2つある。一つ目はHierarchyViewから非表示にしてしまうこと。例えばLockObjectのように、アタッチしたオブジェクトの子オブジェクトを非表示にする事で、特定階層から下…

無料のタイルマップエディタ・AutoTileSet

無料のタイルマップが地味にすごかった。AutoTileSetは、タイルマップを作る感じのアセットだ。 AutoTileSetAutoTileSet(AutoTileSetManager)を選択中に画面にタイルが表示されるので、そのタイミングで画面をタップすると画面にタイルが置かれる超シンプ…

Unityの3D Textで文字が滲む問題の対策(修正版)

Unityで3D Textを使用する場合、文字が若干滲む事がある。特にUnityを初めて使った人が3D Textを使った場合は、何も考えず滲んだままの文字が表示されている。 2lt_frost CharacterSizeのパラメータを小さくしてもScaleを小さくしたのと同じ効果があるので、…

Unityの3D Textで文字が滲む問題の対策

修正版をアップしました Unityの3D Textで文字が滲む問題の対策(修正版)追記 どうもこの記事を「uGUIのText表示」で来る人が多いみたいですが、この記事は3D Text用です。 uGUI(UI)のテキストはこちら。 tsubakit1.hateblo.jp Unityで3D Textを使用する…