(:3[kanのメモ帳]

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

(:3[kanのメモ帳]

サーバーサイド不要&無料でゲーム内のデータをリモートで変更出来るUnity公式の機能 Remote Settings【Unity】【Unity Services】

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


はじめに

Unityはエディタだけでなく、Unity AdsUnity Analyticsなどの




便利なサービスをUnity Servicesという形で提供しています。

Unity は、ゲーム開発はもとより、オーディエンスをひきつけ、維持し、収益につなげるさまざまな無料サービスを提供しています。


そんなUnity Servicesの中(のUnity Analyticsの中)にRemote Settingsというサービスがある事を

以下の動画で知ったので、試してみて、導入や使い方をまとめてみました!



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

ブラウザ上で設定したデータを、プログラムで簡単に取得出来るといったもの。

f:id:kan_kikuchi:20190827062021g:plain


もちろん、サーバーサイドの準備や実装は必要ありませんし、

無料で使う事が出来ます!(これ以上使ったら有料みたいなのもなし)


残念ながらゲーム側からデータを送る事は出来ませんが、それでも

ゲームバランスに関わる値の調整、ゲーム内イベントのデータやフラグ管理、広告の配信比率

など、様々な用途に使えるので、覚えておいて損はないと思います。


導入(ブラウザ編)

続きを読む

Easy Saveを使ってるうちに遭遇するかもしれない、いくつかのエラーとその対処法【Unity】【アセット】【Easy Save】【トラブルシューティング】

この記事でのバージョン
Unity 2018.4.4f1
Easy Save 3.1.3


はじめに

以前、簡単にセーブ&ロード&暗号化が実装できるEasy Saveというアセットを紹介しました。

//セーブ
ES3.Save<int>      ("IntKey",       100);
ES3.Save<bool>     ("BoolKey",      false);
ES3.Save<string>   ("StingKey",     "Text");
ES3.Save<Transform>("TransformKey", transform);

//ロード
int    num  = ES3.Load<int>   ("IntKey");
bool   flag = ES3.Load<bool>  ("BoolKey");
string text = ES3.Load<string>("StingKey");
ES3.LoadInto<Transform>("TransformKey", transform);


今回はこのEasy Saveを使ってるうちに遭遇するかもしれない、いくつかのエラーとその対処法

についてまとめた感じの記事です!



なお、現状Easy SaveはES2とES3がありますが、ES3の話ですのであしからず。

(ES2でも同様のエラーが出る、同じ対処法で直るという事もあるかもしれません)


目次

  • はじめに
  • 目次
  • 保存されていないデータのロード
  • セーブ時とロード時で型が違う
  • 暗号化前後のデータ
  • Easy Save 3 Managerのロードタイミング


保存されていないデータのロード

続きを読む

Unity上でアニメーションの編集や新規作成が出来る Very Animation【Unity】【アセット】

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


はじめに

今回はUnity上でアニメーションの編集や新規作成が出来るVery Animationというアセットの紹介です!

f:id:kan_kikuchi:20190819112339g:plain


以下のようなちょっとしたポーズなら簡単に作ることが出来ますし、

凝ったものでも効率よく作成が可能です。また、既存アニメーションの編集も楽に行えます。

f:id:kan_kikuchi:20190820054522g:plain


ちなみに日本語字幕付き動画チュートリアルが豊富なのもオススメポイントの一つです!

f:id:kan_kikuchi:20190818050936j:plain
f:id:kan_kikuchi:20190818051224j:plain

Very Animation - YouTube


なお、記事中の3Dモデルは以下のアセットを使っております。





基本的な使い方

続きを読む

Hierarchy上の非アクティブなオブジェクトを検索し、取得する方法【Unity】

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


はじめに

GameObject.Findを使うとHierarchy上のオブジェクトを名前で検索する事ができますが、

(子に配置されているものだったら、transform.Findでも可)

//Targetという名前のGameObjectを検索し、取得(なければnull)
Debug.Log(GameObject.Find("Target"));
f:id:kan_kikuchi:20190810053030j:plain


残念ながら、アクティブじゃないオブジェクトは検索できません。

f:id:kan_kikuchi:20190810053122j:plain


という事で今回は、Hierarchy上の非アクティブなオブジェクトを検索し、取得する方法の紹介です!


なお、GameObject.Findしかり、こういう検索系の処理は重いので、

使い所を(出来るなら使わない方向で)考える必要がある点には注意が必要です。


FindObjectsOfTypeAll

続きを読む

Unity公式の2D用のライト Light2D【Unity】

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


はじめに

以前にUnityの3D用ライトを2Dで使う方法や、

f:id:kan_kikuchi:20170816184902j:plain


2Dで光や影の表現をするためのアセットを紹介しました。

f:id:kan_kikuchi:20170816124630g:plain


これらはUnityで2D用のライトが存在しないからこその話だったのですが、

なんとついにUnity公式の2D用のライトであるLight2Dが登場しました。


という事で今回は、そのUnityの2D用ライトを実際に試してみた感じの記事です。

イメージとしては以下のような感じで、使い勝手も良く、表現力もかなり高そうでした。

f:id:kan_kikuchi:20190815111624g:plain


ちなみに、この機能はUnity2019.2以降で使えますが、現状Experimental(実験的)な機能なので、

今後大きく仕様が変わる可能性もある点には注意が必要です。

(個人的には実用にはまだちょっと早いと思っています。)


なお、記事中の画像は以下のアセットを使っております。





導入

続きを読む

スクリーンのスリープ設定【Unity】

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


はじめに

今回は「Unityで作ったアプリを起動してると、自動スリープしない!させたい!」

みたいな場合の話です!


Screen.sleepTimeout

Unityでスクリーンのスリープ設定を変更する時はScreenのsleepTimeoutを使います。



このsleepTimeoutにSleepTimeout.SystemSettingを設定すれば、

端末で設定された時間でスリープするようになります。

//端末で設定された時間でスリープするように
Screen.sleepTimeout = SleepTimeout.SystemSetting;


例えばiOSなら、設定の「画面表示と明るさ」にある「自動ロック」の時間でスリープします。

(OSのバージョンによっては場所が違うかもしれません)

f:id:kan_kikuchi:20190806081400j:plain

f:id:kan_kikuchi:20190806081408j:plain


なお、スリープしないようにしたい場合はSleepTimeout.NeverSleepを設定します。

(デフォルトはこの設定)

//スクリーンがスリープしないようにする
Screen.sleepTimeout = SleepTimeout.NeverSleep;


ちなみにScreen.sleepTimeoutはintですが、スリープしたい時間を設定したりは出来ません。

//10秒でスクリーンをスリープさせたつもり!
//でも実際はSleepTimeout.NeverSleep(-1)の設定に
Screen.sleepTimeout = 10;



ギズモで矢印、円柱、カプセル、円、弧を描画出来るようにするGizmoExtensions 【Unity】【Gizmos】

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


はじめに

UnityではGizmosを使ってSceneView上に線や図形などを描画が出来ます。

(GameViewには表示されないので、エディタ上での確認用)

public class NewBehaviourScript : MonoBehaviour{
   
  private void OnDrawGizmos() {
    //赤い色で0,0,0から上に1の線を引く
    Gizmos.color = Color.red;
    Gizmos.DrawLine(Vector3.zero, Vector3.up);
  }

}
f:id:kan_kikuchi:20190807075041j:plain


そんなGizmoで矢印かきたいな〜と思ったら、なんと既にその機能を作られた方がいました。



という事で今回は、それを紹介する感じの記事です!

イメージとしては以下のような感じで、矢印以外にも色々な図形をかけるようになります。

f:id:kan_kikuchi:20190807083516g:plain



GizmoExtensions

続きを読む

一瞬であらゆるゲームオブジェクト(メッシュ)を爆発させるExploder【Unity】【アセット】

この記事はUnityアセット真夏のアドベントカレンダー 2019の8日目の記事です。


この記事でのバージョン
Unity 2018.4.4f1
Exploder 1.7.10


はじめに

今回は一瞬であらゆるゲームオブジェクト(メッシュ)を爆発させるExploderというアセットの紹介です!



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

f:id:kan_kikuchi:20190804085922g:plain


ちなみに、同じ開発元が2Dバージョンも出してるようです(未確認)。



なお、記事中の画像は以下のアセットを使っております。





目次

  • はじめに
  • 目次
  • 基本的な使い方
  • 同時に全て爆発
  • 一部分だけ爆発
  • 爆発の設定と、設定を複数作る方法
  • 初回爆発時の処理落ち対策


基本的な使い方

続きを読む

Unityエディタを再生する前に、シーンに問題ないか検証する【Unity】【エディタ拡張】


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


はじめに

今回は「シーンを再生する前に問題がないかの検証を挟みたい」という場合の話。


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

f:id:kan_kikuchi:20190720051702g:plain


なお、記事中の画像は以下のアセットを使っております。





SceneVerifier

続きを読む

uGUIの画像(Image)の内側を切り抜いて(逆マスクで)表示【Unity】【uGUI】

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


はじめに

UnityはSpriteRendererでもuGUIのImageでも、画像一部分だけを表示する

いわゆるマスクを簡単に実装する事出来ます。


f:id:kan_kikuchi:20170802074348g:plain


ただ、画像の内側を切り抜いて表示する(逆マスク)は、uGUIのImageでは出来ません。

f:id:kan_kikuchi:20170802081416j:plain


ということで今回は、uGUIのImageで逆マスクを実装する方法の紹介です。

f:id:kan_kikuchi:20190728113617g:plain


なお、記事中の画像は以下のアセットを使っております。



UnmaskForUGUI

続きを読む