(:3[kanのメモ帳]

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

アセットやオブジェクトを登録し、いつでも簡単に見つけられるFavorites Tab[s]【Unity】【アセット】

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


はじめに

今回はアセットやオブジェクトを登録し、いつでも簡単に見つけられるFavorites Tab

というアセットの紹介です!


f:id:kan_kikuchi:20180415112816g:plain


いわやるアセットやオブジェクトのブックマークまたはお気に入り機能のようなアセットで、

規模が大きく、オブジェクトが探しにくいプロジェクトや、

整理が苦手で、ファイルをどこに置いたか分からなくなる人に特にオススメです!


なお、記事中のプロジェクトではCorgi Engineも使っています。






目次

  • はじめに
  • 目次
  • 基本的な使い方
  • アセットのパスを表示
  • 星の色を変える。星をリボンにする。
  • 並び替え、フィルター
  • おわりに


基本的な使い方

続きを読む

IBMのWatsonをUnityで使ってみた【Unity】【アセット】【IBM Watson】

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


はじめに

ちょっと前に、Unity Asset StoreにIBM Watson Unity SDKが公開され、

UnityでもIBMのWatsonが簡単に使えるようになりました!

という事で今回は、WatsonをUnityで使ってみようという趣旨の記事です。

なお、現状Web PlayerやWeb GL上では使えないようです。


目次

  • はじめに
  • 目次
  • Watsonとは
    • 具体的に何が出来るの?
    • 料金
  • 使い方
    • IBM のアカウント作成
    • IBM Cloudのプロジェクト作成
    • アセットのインストール
    • サンプルを動かす
  • おわりに
  • 参考


Watsonとは

続きを読む

アセットのコピー(AssetDatabase.CopyAsset VS File.Copy)【Unity】【エディタ拡張】


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


はじめに

Unityではアセット(ファイル)をコピーしたいと思った時に簡単に実装出来る方法が二つあります。

一つはUnityの機能であるAssetDatabase.CopyAsset、もう一つはC#(.NET)の機能であるFile.Copyです。

//using UnityEditor;が必要
AssetDatabase.CopyAsset("Assets/Resources/Corgi.png", "Assets/Resources/Corgi2.png");
//using System.IO;が必要
File.Copy("Assets/Resources/Corgi.png", "Assets/Resources/Corgi2.png");


二つも実装方法があると、どっちを使ったら良いのか気になりますよね?

という事で今回はAssetDatabase.CopyAssetとFile.Copyの比較です!


先に結論だけ言ってしまうと、基本的にAssetDatabase.CopyAssetを使えばOKです。


目次

  • はじめに
  • 目次
  • 設定(.meta)のコピー
  • コピー後のリフレッシュ
  • コピー失敗時の挙動
  • 上書きコピー
  • ディレクトリのコピー
  • おわりに


設定(.meta)のコピー

続きを読む

RectTransformのPositionを変更してからsizeDeltaを変更するとPositionの変更が戻される【Unity】【トラブルシューティング】

タイトル通りなのですが、RectTransformのPositionを変更してから

sizeDeltaを変更すると、Positionの変更が戻されるようになりました。



実際の例で説明すると、以下のようなImageがあった時に

続きを読む

Colliderを一つのGameObjectにまとめた場合と、ColliderごとにGameObjectを分けた場合の負荷比較【Unity】【最適化】

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


はじめに

Unityで当たり判定を実装する時にはCollider(2D)を使いますが、

Colliderを複数付けたい場合に、一つのGameObjectにColliderをまとめて付けた場合


f:id:kan_kikuchi:20180401080819j:plain


ColliderごとにGameObjectを分けた場合とで、


f:id:kan_kikuchi:20180401080827j:plain


負荷の差がどの程度になるかって気になりませんか?

なんか気になってしまったので、調べて見ました!


なお、今回は2Dでの比較を行っています。(おそらく3Dでも同じ結果だとは思います。)


静止状態での比較

続きを読む

エディタ実行中にTime.timeScaleを任意の値に変更する【Unity】【エディタ拡張】


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


はじめに

UnityではTime.timeScaleを操作する事によって時間の進み具合を変更出来ます。



このTime.timeScaleを好きな時に好きな値に変更したい!

好きなタイミングでスローモーションや早送りしたい!みたいな時に使える

TimeScaleControlWindowというモノを作ったので、今回はこれをご紹介!


f:id:kan_kikuchi:20180328201056g:plain


なお、エディタ上でしか使えないのであしからず。


TimeScaleControlWindow

続きを読む

インポートされたファイルの拡張子を自動で変換する【Unity】【エディタ拡張】


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


はじめに

インポートされたファイルの拡張子を自動で変換する便利クラス

ExtensionConverterを作ったので、今回はこれをご紹介!


f:id:kan_kikuchi:20180306095507g:plain


ちなみに既にインポート済みのファイルの拡張子を変換する事も可能です。


f:id:kan_kikuchi:20180306100525g:plain


ExtensionConverter

続きを読む

ScriptableObjectとは【Unity】【ScriptableObject】

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


はじめに

今回はUnityの便利&重要機能の一つ、ScriptableObjectについて

用途や利点、作り方から使い方に至るまで、出来る限りまとめてみました!


目次

  • はじめに
  • 目次
  • ScriptableObjectとは
  • 用途
  • 利点
    • メモリ節約
    • パラメータの比較や管理が容易
    • Unity上で確認、調整がしやすい。他のアセットを設定出来る。
    • 作成や使用、拡張が簡単
    • ロード時間が短く、メモリ使用量も軽減
  • 作成方法
    • クラスの作成
    • メニューから作成
    • プログラム(Excel)から作成
  • 使い方
  • 欠点、注意点
    • 変更した値が戻る場合と戻らない場合
    • クラス名とファイル名は同じにする必要がある
    • データ量が多いとInspectorの表示が重くなる
    • データサイズは圧縮したJSONの方がちょっと軽い
  • おわりに


ScriptableObjectとは

続きを読む

ScriptableObjectとJSONの比較(データサイズ、ロード時間、メモリ使用量)【Unity】【ScriptableObject】


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


はじめに

今回は

「Unityで静的なデータを扱う際にScriptableObjectとJSONのどっちが優れてるの?!

という、貴方(私)の疑問を解決出来るかもしれない記事です!


比較対象

続きを読む

ScriptableObjectの変更した値が戻ってしまう場合の対処法【Unity】【ScriptableObject】【トラブルシューティング】


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


はじめに

例えば以下のようなValueという変数を持つScriptableObjectがあり、

//Valueという変数を持つScriptableObject
public class MyScriptableObject : ScriptableObject {
  public int Value = 0;
}


そのScriptableObjectのValueをエディタ上でプログラムから変更したとします。

//ScriptableObjectをロードし、Valueを変更
MyScriptableObject myScriptableObject = Resources.Load<MyScriptableObject>("MyScriptableObject");
myScriptableObject.Value = 100;


すると一見、Inspector上では値が正常に変更されたように見えますが、

f:id:kan_kikuchi:20180226171132j:plain


Playボタンを押した時やUnityを再起動した時等に、変更した値が戻ってしまいます。

今回はこういう場合の対処法です。


原因と対処法

続きを読む