(:3[kanのメモ帳]

個人ゲーム開発者kan.kikuchiのメモ的技術ブログ。月木更新でUnity関連がメイン。

神巫女のSPに関する工夫の話【ゲーム演出】【Unity】【NintendoSwitch】

はじめに

先日、Nintendo Switchでリリースし、

2017年上半期ダウンロードランキングで4位にもなった神巫女


f:id:kan_kikuchi:20170706091020p:plain
Nintendo Switch 2017年上半期 ダウンロードランキング|Nintendo


に関するインタビューをUnityさんにしてもらったのですが、その際にSPの話題がでました。

例えばSPがバラバラって散らばって吸い込まれるところは、Kikuchiさんがプログラムしたものの方が僕がやろうと思ってたことよりも良かったので、「じゃあもう、それで行きましょう」みたいな感じで。


神巫女をプレイしてない方のために説明すると、SPとは敵を倒した時に出現するオブジェクトで、

自動的にプレイヤーに吸収され、技を使う時や宝箱を開ける時等に消費するモノです。


f:id:kan_kikuchi:20170704131831g:plain
f:id:kan_kikuchi:20170702064318g:plain


そういえば、このSPだけでも色々な工夫したな〜と思い、今回記事にしてみました。

神巫女やSwitch、Unityやゲームジャンルに関わらず、わりと汎用的な内容だと思います。


なお、実際のプログラムは記載していないのであしからず。


目次

  • はじめに
  • 目次
  • 発生数の調整
  • 拡散と収束
  • SEずらしと爆発
  • 技中は一時停止
  • オブジェクトプール
  • おわりに



発生数の調整

続きを読む

エディタ拡張でオブジェクトを生成した場合にシーンを保存する方法【Unity】【エディタ拡張】

この記事でのバージョン
Unity 5.6.1f1


はじめに

例えば以下のようなコードで、オブジェクトを生成するエディタ拡張を作る事が出来ますが、

using UnityEngine;
using UnityEditor;

public class GameObjectCreator {

  [MenuItem("Test/Create")]
  public static void Create (){
    //新しいゲームオブジェクトを作成
    new GameObject("New GameObject");
  }

}

f:id:kan_kikuchi:20170616064914g:plain


このコードだと、Sceneに編集済みのマーク(米印)が表示されず、保存する事が出来ません。


今回はそんな時に役立つ記事です。


Undo

続きを読む

検索時にRequest errorというエラーがでる時の対処法【Unity】【トラブルシューティング】

この記事でのバージョン
Unity 5.6.1f1


はじめに

今回は検索時にRequest errorというエラーができる時の対処法です。


f:id:kan_kikuchi:20170615062432p:plain


Show Asset Store search hits

続きを読む

ビルド直前にシーンを自動で設定をしようとしてみた【Unity】【エディタ拡張】

この記事でのバージョン
Unity 5.6.1f1


はじめに

以前に自動でシーンを追加する方法を紹介したのですが、



これとUnity5.6から追加されたIPreprocessBuildを併用すれば、

ビルド直前にシーンを自動で設定出来るのでは?と、そんな事を思い付きました。

Implement this interface to receive a callback before the build is started.
(このインターフェイスを実装して、ビルドを開始する前にコールバックを受け取ります。)


これができれば、設定されているSymbolによって読み込むシーンを変えられるので、

結構便利では?という事で、実際にやってみました!


ScenesInBuildUpdater

続きを読む

SliceしたSpriteの取得を簡単にし、キャッシュもする便利クラス【Unity】

この記事でのバージョン
Unity 5.6.1f1


はじめに

UnityではSpriteEditorを使って一つの画像から複数のSpriteへSliceする事が可能です。


f:id:kan_kikuchi:20170612052729p:plain


こうすることで、一枚一枚で使うよりSetPass Calls(描画命令回数?)が減り、処理が軽くなりますが、

Sliceした画像を読み込むには以下のようにちょっと手間がかかります。

//スライスした画像を全て読み込み
Sprite[] sprites  = Resources.LoadAll<Sprite>("Atlas/SpriteAtlas");

//読み込んだ画像から任意(Cloud)の画像を検索し、取得
Sprite  cloudSprite = System.Array.Find<Sprite>(sprites, (sprite) => sprite.name.Equals("Cloud"));


一度だけならいいですが、何度も同じ処理を書く事は避けたいですし、

Resources.LoadAllとSystem.Array.Findを何度も実行するのは負荷的にも心配です。


という事で、

SliceしたSpriteの取得を簡単にし、キャッシュもする便利クラスSlicedSpriteUtilityを作りました。


SlicedSpriteUtility

続きを読む

enumのToStringが遅いって本当ですか?【C#】【Unity】【拡張メソッド】【高速化】


この記事でのバージョン
Unity 5.6.1f1


はじめに

enumのToStringは遅いという話を耳にしたので、気になって調べてみた系の記事です!

ちなみに、以前にenumをkeyにしたDictionaryが遅いという話も記事にしてました。



そもそものenumのToStringは遅いという由来は以下の通り。

EnumのToStringは非常に遅いです。
これは内部ではリフレクションを使用しているためです。


上記の記事によると、ToStringに代わる拡張メソッドをswitch文で実装する事で

なんと約100倍ものスピードになるそうです!


という事で実際にUnityで確かめてみました!


計測

続きを読む

オブジェクトの検索、選択、アクティブ切替を楽にする【Unity】【エディタ拡張】

この記事でのバージョン
Unity 5.6.1f1


はじめに

今回はオブジェクトの検索、選択、アクティブ切替を楽にするエディタ拡張のご紹介!

イメージとしては以下のような感じで、


f:id:kan_kikuchi:20170530055428g:plain


よく使うオブジェクト名を登録しておくと、それをいつでも検索&選択でき、

アクティブ切替もできちゃうと言った具合です。


SelectionWindow

続きを読む

アプリ内でのレビューをUnityで実装【Unity】【iOS】

この記事でのバージョン
Unity 5.6.1f1
Xcode 8.3.2
iOS 10.3.1, 9.3.5, 8.0, 7.1.1


はじめに

iOS10.3からアプリ内でレビューを付けられるようになりました。


f:id:kan_kikuchi:20170610062217j:plain


しかも、この公式の機能以外で評価を促す事は禁止となるようです。

アプリ上で評価を促す際には、Appleが提供するAPIを使わなければいけなくなるそうです。


ということで今回は、アプリ内でのレビューをUnityで実装してみました!


ReviewManager

続きを読む

XcodeにサポートしていないバージョンのiOSを追加する【iOS】

この記事でのバージョン
Xcode 8.3.2


はじめに

Xcodeから実機に転送する際、

サポートしてないiOSの場合は以下のような警告が出て転送が失敗します。

Could not locate device support files.

f:id:kan_kikuchi:20170605073531p:plain


今回はそんな場合の対処方法です。


対処方法

続きを読む

カテゴリ別、厳選記事一覧【Unity】【エディタ拡張】【C#】

はじめに

このブログに投稿した記事の中から、人気があったモノや有益っぽい気がするモノを厳選し、

カテゴリ別にまとめてみました!随時更新中!


2017.08.03更新

以下の項目を追加
  - Spriteをパックする新しい仕組み、SpriteAtlasを使ってみたhatebu
  - SpriteやImageでMaskを使うhatebu
  - SpriteAtlasを使い易くする拡張hatebu
  - Serializableなクラスをフィールドにしたら、nullなのにコンストラクタが実行される件hatebu


目次

  • はじめに
  • 目次
  • Unityの機能
  • Unityの設定
  • Unityでの実装
  • Unity用便利クラス
  • エディタ拡張
  • エディタ拡張で作った便利機能
  • 拡張メソッド
  • 属性
  • C#
  • モバイル
  • PC
  • uGUI
  • アセット
  • サービス
  • ツール
  • ゲーム演出
  • その他


Unityの機能

続きを読む