テラシュールブログ

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

Unity5.6

【Unity】独自に作成したスレッドの処理時間をCPU Profiler(Timeline)で確認する

まんまタイトルの通りで、.NETで作成したスレッド上の処理時間をProfilerに乗せる方法についてです。 Profilerで負荷のかかっている場所を見つける 非同期処理とProfiler 複数フレームを跨げる 関連 Profilerで負荷のかかっている場所を見つける 処理負荷や…

【Unity】AssetGraphTool、ノーコーディングで 「指定フォルダにインポートしたアセットの設定を、指定した内容に自動更新する」 機能を作る

AssetGraphToolは大量のアセット群を制御するのに向いているエディター拡張です。ノードベースで編集が出来るので、スクリプトを触らない人にも使いやすくなっています。 今回はAssetGraphToolを使用して設定の変更を自動化します。具体的には、特定のフォル…

【Unity】NavMeshSurfaceを使ってゲーム再生中にNavMeshをベイクする方法

今回は動的にNavMeshをベイクするNavMeshSurfaceについてです。 動的にNavMeshをベイクする 高レベルのコンポーネントを入手する NavMeshSurfaceを利用した動的なNavMeshのベイク まずは使ってみる NavMesh Surfaceのセット NavMeshSurface.Bakeの呼出 応用 …

【Unity】複数パーツで構成されたSpriteを半透明にしても違和感をなくす方法

今回は最近のスケルタルアニメーションでよく見られるような、複数パーツで構成されたSpriteを、違和感なく半透明にするアプローチについてです。 若干限定的な所があるので、そのあたりは自分で何とかする必要があります。 2Dのスケルタルアニメーション ス…

【Unity】CPUプロファイラに表示されるの項目をスクリプトで取得する

プロファイラーに表示されるようなCPUの処理時間をスクリプトで取得する方法についてです。 プロファイラーは負荷の高い部分を観測する プロファイリングの結果をスクリプトで云々する RecorderでProfiler(CPU)の項目を取得 処理時間がやたら長くなったら…

【Unity】変化する地形で、マップから落ちないように移動させる手っ取り早い方法

学生のUnityプロジェクトでよく見るのが、主人公キャラクターが壁から落下したり、壁を貫通して移動したりする光景です。 それは「そういったゲーム」なら兎も角、RPGの移動パートのような「キャラクターを移動させる」事が目的の場合は出来れば避けて欲しい…

【Unity】リアルタイムな影とベイクした影を混ぜる、Shadow Mask 特集号

今回はUnity 5.6で追加されたLightingの新しい機能、特にShadowmaskについてです。 Shadow Maskは動的な影と静的な影を混ぜる手法 「影」の計算を事前に行う マスクなので輝度や色を変える事が出来る 間接光は事前にテクスチャに焼かれる 光沢が綺麗に出る C…

【Unity】スプライトの描画順を「下にある物を手前」にする

今回はUnity 5.6から追加されたTransparency Sort Modeを使って「スプライトの描画順を下にある物を優先」にします。 Spriteの描画順 下にあるスプライトを手前に描画 縦に長い物体の問題 解決:Z軸で描画順を調整する 複数のスプライトを合わせて表現してい…

【Unity】物理シェーダーベースのパーティクル向けシェーダー、Standard Particle Shader

物理ベースシェーダー的なパーティクルエフェクトが作られたみたいです。 Standard Particle Shader Standard Particle Shaderは、PBRベースなパーティクルシェーダーみたいです。 通常のStandard Shaderよりライティング周りを簡略化した代わりにパフォーマ…

【Unity】Timelineでフェードイン・フェードアウトするTimeline Clipを用意する

とある事情で作ったTimeline用のフェードイン・フェードアウト Playableです。 これぐらい最初から用意してくれてもバチは当たらないと思いますが、まぁ。 ※Unity 2017b5で実装が大幅に変わった為、動作しません。 新しい実装に修正中 使い方 コードの説明 …

【Unity】Spriteで9 Sliceを使う

今回はUnity 5.6から可能になったSpriteでの9 Sliceについて紹介します。 Unity 5.6から搭載された 9 Slice(スプライト向け) 9 Sliceって? 9 Sliceを使ってみる スプライトの用意 タイリング(Tiled) TiledのTile Mode TiledとSlicedの違い Colliderの大…

【Unity】アニメーションと物理演算を連動させる 5.6以降

以前、アニメーションと物理演算を連動させる方法について紹介しましたが、Unity 5.6でもっとシンプルになりました。 tsubakit1.hateblo.jp Animate Physicsなる機能 Unity 5.6のアップグレードガイドを眺めていると、少し気になる項目がありました。 docs.u…

【Unity】「Unity5.6のわりと地雷なバグ」についての補足

下で紹介された内容は、どちらも解決したみたいです。*1 madnesslabo.net 先日リリースされた「Unity 5.6」について、幾つか地雷なバグがあるそうなので見てみましたが、内容が少し気になったので調べてみました。 AddComponentでImageを足した際に、OnDisab…

【Unity】WebGLとWebAssembly

WebAssembly 先日Google ChromeとFirefoxがWebAssemblyに対応しました。 この素晴らしいニュースではFirefoxが対応したのは当然として、世界で圧倒的にユーザー数の多いGoogle Chromeも対応したという事です。 dev.classmethod.jp Android環境でも「多分動か…

【Unity】ゲームのビルド直前に "ファイルの退避" や "シーンの最適化" 等の処理を挟む

今回はUnityでゲームをビルドする前にプロジェクトやシーンに何らかの処理を行い、、ビルド完了後に戻す方法についての紹介です。 Unity 5.6以降で動作します。 作る際に便利なものとパフォーマンスに良いもの ビルド前とビルド後に処理を行う(全体) ビル…

【Unity】知っておくと少し便利な Profiler に関する小技集

今回はプロファイラーの小技についてです。 プロファイラー小技集 CPUとGPUの使用時間を確認 表示する項目を増やす・減らす CPUプロファイラの表示項目を隠す CPUプロファイラの表示順を変更する 負荷のあるオブジェクトがドレかを確認する Timelineで表示す…

【Unity】ゲームに最初から含めるアセット群を圧縮するオプション

Unity 5.6から、ビルドしたゲームに含めるアセット群を圧縮するオプションが追加されました。 この圧縮をONにすることで「アプリ起動時間の短縮」や「インストール後にサイズが膨れ上がるのを防ぐ(iOS/Standalone)」効果が期待出来ます。 ビルドしたゲーム…

【Unity】Video Playerでアルファチャンネル付きムービーを使う

アルファチャンネル付きムービー、アルファムービー、透過ムービー、with alpha、αムービー、Aビデオ、呼び方は色々ありますが、背景が透明なムービーについてです。 アルファチャンネル付きムービー 使用出来るコーデック Webmを再生出来ない端末では アル…

【Unity】「被写体のどこを映して欲しいか」を元にカメラの動きをコントロールするCinemachine BASE RIG を軽く使ってみる

今回、Unity標準機能化の動きに合わせて無料で使用出来るようになったCinemachine を実際に触ってみました。 カメラの動きをコントロールする 簡単な使い方 まずはChinemachineのセットアップ。 カットの用意 注目するオブジェクトのセット ドリー的にカメラ…

【Unity】Timelineで字幕を表示する

tsubakit1.hateblo.jp ---------- 以下旧記事 ---------- TimelineのExperimental Buildが公開されています。 せっかくなので字幕に使ってみました。 ※Unity 2017b5で実装が大幅に変わった為、動作しません。 新しい実装に修正中 Timelineのスクリプト制御 T…

【Unity】確認までに長い時間を要求するライトのベイクを、素早く確認する Progressive Lightmapper

今回は、Unity 5.6の個人的な目玉機能、Progressive Lightmapperについてです。 ライトのベイクには時間がかかる Progressive Lightmapper という機能 ベイクの残り時間が表示される Emissiveなマテリアルで焼いた影が若干綺麗 ベイク中にゲームを再生したと…

【Unity】とあるライトマップと光沢感(スペキュラー)

Unityユーザー助け合い所で少し気になった投稿があったので、調査してみました。 Lightmapを焼くと光沢が出ない 光沢を表現したい Directional Lightの場合 PointLightやSpot Light Pixel Light Countの限界 AreaLightやEmissive Objectの場合 モバイルでは……

【Unity】Timelineエディタのプレビューリリース版その1がリリース

UnityのTimelineエディタのプレビューリリース版その1がリリースされてました。 Timeline Experimental Preview Release 1 https://forum.unity3d.com/threads/timeline-experimental-preview-release-1.455265/ 機能 現状の機能は大雑把にこんな感じです。…

【Unity】複数のColliderを結合するComposite Collider 2Dを使って少し遊ぶ

今回はUnity 5.6に追加されたComposite Collider 2Dについてです。 Compound Collidersという機能 CompositeCollider2Dという機能 ダイナミック洞窟生成 作り方 関連 Compound Collidersという機能 Rigidbodyの下にColliderが複数ある時、実はUnityはCollide…

【Unity】Area Lightと、Emissiveな材質を持つ発光するオブジェクトが輝けと囁く

Unityのライティングシステムの隅にひっそりと存在するArea Light(エリアライト)、その知られざる生態系について、今回は踏み込んでみようと思います。 影の表現が柔らかくなるAreaLight 広い範囲からの照射ばぼんやり、狭い範囲からの照射はハッキリ Area…

【Unity】Unity-VR360-OverlayGridで、全方位写真の一部にポスターを貼ったり動画を仕込んだり

今回は全方位写真(360度写真)で用意した風景の一部に動画を仕込む方法についてです。 全方位写真 Unity-VR360-OverlayGrid 使い方(下準備) 使い方(物の配置) より馴染ませる為に 動画を仕込もう(Unity 5.6版) マテリアルのMainTexにムービーを流し込…

【Unity】当たり判定の有無や形状、物理演算の状態を視覚的に確認する Physics Debugger【5.6】

物理演算を使用している際に、現在Rigidbodyがスリープしているかや物理演算に使用するコライダーの形状等を確認したく鳴る事があります。 Unity 5.6で、そういったケースで便利なPhysics Debuggerが追加されたので、少し紹介します。 Physics Debugger 実際…

【Unity】ベイクした影とリアルタイムな影を混ぜる新しい幾つかの手法と、その他諸々【5.6b3】

Unity 5.6(b3)より、Experimental(実験的)で提供されていた新しいライトマップの機能がベータ版に統合されました。 ライトのMixedモードがStationaryモードに変化 ベイクした影を表現しつつリアルタイムな影も使いたい 事前計算した影を「マスク」として準…

【Unity】7.5時間を約3分に。ライトマップ(Realtime GI)のベイク時間を短縮する為のチュートリアル

Unityでライトマップをベイクする場合、何も考えず初期設定でベイクすると非常に時間がかかります。それを短時間でベイクする為のチュートリアルとチュートリアルを行う為のアセットが公開されてました。 チュートリアルとアセット 7.5時間が2.25分に 補足 B…

【Unity】スプライトの描画順制御を楽にするSortingGroup

昨日に引き続きUnity 5.6の新しい機能についてです。 スプライトの描画順制御 Order In Layerで制御した時の問題点 SortingGroupで描画順を制御 利用アセット 関連 スプライトの描画順制御 Unityのスプライトは、標準設定ならば*1、Sorting LayerとOrder In …