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

ツクロウヤ

Unityによるゲーム開発記やUnity,3dsMaxのTipsなどを記載していきます。

【Unity】エディタ拡張の汎用関数群

前回のツール紹介ではPhotoshopのリネームツールを紹介していましたが、Unityでもオブジェクトのリネームツールを作成していますので、そちらの紹介をしようかと...

思いましたが...
Unityのエディタ拡張で使用する汎用関数群のクラスを使っていますので先にそちらを紹介します。
略:このサイトで紹介するUnityのエディタ拡張はこれを入れてから使ってください。

続きを読む

【開発記】ステージ遷移について

ステージ遷移を実装しましたよ!ということで更新。
敵のグループを倒したりすると扉が開くようなものなど、ステージの状態が変化するものを実装しました。

f:id:ArtAwA:20161106143332j:plain

カメラの設定や背景を作っているころからなりそうだなぁと思いつつも若干目をそらしていた遮りの問題が起こってしまいました...
扉をくぐる際に途中で止まったりすると壁に遮られてしまい、プレイヤーの姿が見えなくなってしまいます...

f:id:ArtAwA:20161106143333j:plain

今後、壊せるオブジェクトや少し入り組んだような背景を作る予定なので、なんとかしないといけないということで。
白猫プロジェクトなどでもやられていました、隠れてしまったら、プレイヤーをシルエットで表示する機能があればこの問題も回避できるなと思い実装してみました。
ちなみに以下の記事を参考にさせてもらいました。

Unityでステンシルを用いたアウトライン表現 - 太郎Work

そして出来たのが以下のような感じです。

f:id:ArtAwA:20161106143334j:plain

問題解消!

と喜んだものの、別の問題も浮上...
描画負荷が高いんですよ... DrawCallが「3」も...
実装したシェーダでの処理的に「アウトライン」「ステンシル」「テクスチャカラー」でそれぞれで描画が掛かっています。

またキャラクターの構成がカスタマイズを想定して、
・頭部
・身体
・武器
の3つに分けています。
これらは「Skinned Mesh Renderer」なので、Batchされずにそれぞれにまた描画が...
キャラ一体に「DrawCall : 9」は恐怖ですね...

アウトラインはシェーダではなく自前で用意するのもありかな、でも調整がやりづらいし、汎用的じゃないなと思いつつ。

シェーダを弄り始めると泥沼にはまりそうなので、今は実装を優先して一旦保留ということで...

それでは今回はこの辺で
(´・ω・`*)ノシ

【Photoshop】レイヤーのリネームツール

Photoshopのリネームツールが欲しかったので探していましたが、微妙に痒い所に手が届かず...
じゃあ、練習がてら作るかということで作ってみました。

f:id:ArtAwA:20161020005939p:plain         f:id:ArtAwA:20161020015414p:plain

スクリプトの概要

主な機能は以下の4点です。

  • 「Add」レイヤー名に文字列を追加(前後)
  • 「Replace」レイヤー名の置換
  • 「SerialNum」レイヤー名に連番付け+上書きして連番(前後+桁ぞろえ)
  • 「Delete」レイヤー名から指定桁数文字列を削除(前後)
続きを読む

【開発記】リザルト画面だよ!

先週はちょっと別のことで自己開発をサボりがちでした><
ちなみに先週やっていたことは
・リザルトの実装+それに伴うデータの設計・外部化
・ノックバック処理の修正(アニメ実装まだ)
・開発補助ツールの拡張
と地味なことばかりやっていました。
Photoshopのリネームツールとか作ってたり、これはまたの機会に)

見た目的にあまり変わりないなぁと思っていましたが、リザルト画面を見せられるなということで。

f:id:ArtAwA:20161018002129j:plain

リザルトはバトル後にバトル画面に乗っける形にしましたが、背景によって見えにくさが変わってくるなと...
スクショを取っていて気づきましたが、4桁の数字とかは3桁区切りをした方が見やすそうですね。

この後はとりあえず先にステージギミックの実装を行っていきます。
単調さの解消にチャージなどを入れようかとしていましたが、この辺りはもう少しゲームシステムを詰めてから実装するか判断しようかと。

それでは今回はこの辺で
(´・ω・`*)ノシ

【開発記】開発時の問題:Sceneがnot loadedから進まない

先日進捗動画を公開して、一時停止画面などを表示して、また戦闘に戻るみたいなことをやっていました。
が... 他のリトライとリタイヤは実はココは正常に動いていませんでした|ω・`)コソ

何故かシーン遷移の際に、Sceneが「not loaded」の表記から一切進まず、BGMが垂れ流されている状態になっていました。
f:id:ArtAwA:20161008232144p:plain

何でだろうと調べた結果...
一時停止時に「Time.timeScale = 0.0f」で一時停止の処理を実装していましたが、リトライやリタイヤへの遷移時に元に戻す処理が抜けていたので、「not loaded」から進まない状態でした。
まぁ何というか... 凡ミスですね...(こんなのに何時間も悩んでいたのか...)

ちなみにロード時はこちらのサイトを参考に
【Unity5】非同期ロードでローディング画面を実装する。 : ねこバタ会議
SceneManagerに変えた形で実装していますが、

private IEnumerator LoadSceneAsync()
{
  SceneManager.UnloadScene(mCurrentScene);

  // 非同期でロード開始
  mAsync = SceneManager.LoadSceneAsync(mNextScene, LoadSceneMode.Additive);

  // シーン遷移をしない
  mAsync.allowSceneActivation = false;

  // 非同期読み込み中の処理
  while (mAsync.progress < 0.9f) //0.9で止まってしまうため
  {
	yield return null;
  }

  yield return new WaitForSeconds(LOAD_WAIT_TIME);

  // シーン遷移許可
  mAsync.allowSceneActivation = true;
}

どうも「mAsync.progress」は進むようで、シーン遷移は許可されている状態でした。
ずっとこの辺りで何かおかしくなっているのではと勘ぐっていましたが無駄足という...

それでは今回はこの辺で
(´・ω・`*)ノシ

【Unity】ショートカットを拡張した便利ツール群

今回は開発記以外の内容を記載!
Unityで作業を行っていて、結構同じことを頻繁に行うことが多く、めんどいなと思いまして。
Unityのエディタ拡張で、よく使う機能や動作をショートカット化してみました。
記事を記載していて思いましたが、uGUIに対応していないですね...
(後ほど修正して更新すると思います...)

(修正しました)

■機能一覧

・オブジェクトのオン、オフをトグルで切り替え : 「Ctr+T」
・PrefabをApply : 「Ctr+Alt+A」
・ゲームオブジェクトのTransformをリセット : 「Ctr+Alt+R」
・グループ化(選択したオブジェクトをEmptyの子にする) : 「Ctr+G」
・Particle Effectをトグルで再生・停止する : 「Alt+P」
・オブジェクトのTransformを四捨五入:「Ctr+Shift+R」

■使い方

1. Projectフォルダ以下に「Editor」という名前でフォルダを作成(階層はどんなでもOK)
2. 「Editor」フォルダ内に「ShortCutExtension」という名前でC#のファイルを作成
3. 以下のソースコードをコピペって保存
4. 上部タブにCustom/ShortCutExtensionが追加されていたらOK
5. 上部タブから選択するかショートカットを入力

※他の拡張などで既にショートカットが割り振られているときの挙動は保証できません。

ソースコード

それでは今回はこの辺で
(´・ω・`*)ノシ

【開発記】進捗動画第一弾!

今週中に動画を撮ると言ってしまったので、動画を撮りました!
(宣言すると逃げられなくなるので良いですね...)

ちなみに今週は一時停止、シーン遷移、ローディング、各種調整などを行っていました。
リザルトまでは実装してから動画を撮りたかったのですが、勉強しながらの実装で想定よりもかなり時間が...

動画はとりあえずyoutubeにアップロードしてみました。(ニコニコは後日...)

所々キャラが直角に動いていたり、コントローラーの見た目が変わっていないのに動いているのはPCで撮影しているので、キーボードで動かしているときです。
仮想コントローラーはUnity上での確認が面倒ですね...
かなりやっつけでキーボードに対応したので、動きがもっさりした感じに...

動画を撮影して表示確認していて、思いましたが作ったものを客観視できて良いですね。
₍最初撮るときはめんどくさいと思ってましたが...₎

攻撃ボタンをタップした時のボタンリアクションやHPバーが徐々に減少など、後回しにしていたものがないと結構見た目的に良くないですね。
攻撃ボタンのリアクションがないのは特に。
あと完全に忘れていましたが、敵が死ぬときのエフェクトが今回用に作ったものじゃないので、見た目がマッチしていない...

これからはテストプレイの他に動画での確認も行うかも...?
次回の動画撮影は実機で行いたいと思います。

 それでは今回はこの辺で
(´・ω・`*)ノシ