【Unity】もしかしたら役に立つかもしれないUtil集

Android

この記事は Unity Advent Calendar 2016 13日目の記事です。
今日までの記事を全て読ませていただいてますが、どれも面白いですね。
2もあるようですのでこちらも是非是非!

私からは、「(私にとって)役に立っている自作Util」をご紹介させていただきたいと思います。
既に何点かはご紹介させていただいてますが改めて、ご紹介させて頂ければと思います

実機上(ゲーム内)でメモリ使用量を表示してみる 〜iOS&Android〜

Unityのプロファイラーでのメモリ使用量の計測は
Unity社にお問い合わせしたところデバッグ用途ということでしたので、
実際に実機上で使用されているメモリ使用量を取得したい!
っということでネイティブプラグインを作成してみました。
こちらのGitHubに置いてあります。
https://github.com/VeniTaku/MemoryChecker-Unity

これを↓こんな感じで呼び出していただくと、メモリ使用量を取得できます。

using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using System.Runtime.InteropServices;

public class UIViewUsedMemory : MonoBehaviour {

	[SerializeField] Text memoryText;

#if UNITY_IOS
	[DllImport("__Internal")]
	private static extern int getUsedMemorySize(); 
#endif

	void Update () {
		float m = 0;
#if UNITY_EDITOR
		m = ( System.GC.GetTotalMemory(false) + Profiler.usedHeapSize ) / 1024f;
#elif UNITY_IOS
		m = getUsedMemorySize() / 1024f;
#elif UNITY_ANDROID
		using ( AndroidJavaClass plugin = new AndroidJavaClass("com.veniegames.memorychecker.Main")){
			m = plugin.CallStatic("getUsedMemorySize");
		}
#endif
		memoryText.text = m + "KB  " +  (m/1024f) + "MB";
	}
}

Hierarchy上でワンクリックでシーンのLoad、UnLoadを切り替えれる機能

複数のシーンを同時に編集する機能(通称:マルチシーンエディティング)が導入されてから、
Hierarchy上に複数のシーンを読み込んで作業をするようになったのですが、
切り替えるのにちょっと面臭かったので
ぽちっとON/OFFを切り替えれる機能を作ってみました。

こんな感じのです
demo

これもGitHub上にアップしております
https://github.com/VeniTaku/EditorSceneActiveSwitcher-Unity

特定のClassを簡単にローカルデータ(ストレージ内)に保存(セーブ)する機能

こんなClassがあったとして

[System.Serializable]
public class PlayerData{
	public string name;
	public int hp;
	public int mp;
}

これを、簡単に保存したり、読み込んだりしたいなー。
っという時にこんな感じにできます。

	PlayerData playerData;

	public void OnClickSave(){
		LocalDataSaver.Save(playerData);
	}

	public void OnClickLoad(){
		playerData = LocalDataSaver.Load();
	}

	public void OnClickDelete(){
		LocalDataSaver.Delete();
	}

こちらもGitHub上にアップしております。
https://github.com/VeniTaku/LocalDataSaver-Unity

簡単にローカルデータ(ストレージ内)に保存(セーブ)できるClass

さっきと似たようなものですがちょっと違う物も作ってみました。

さっきのPlayerDataクラスがあるとしたらこんな感じに使えます。

	[SerializeField]
	InputField m_InputName;
	[SerializeField]
	Text m_TextName;

	public void OnClickSave(){
		PlayerLocalData.Instance.name = m_InputName.text;
		PlayerLocalData.Save();
	}

	public void OnClickLoad(){
		PlayerLocalData.Load();
		m_TextName.text = PlayerLocalData.Instance.name;
	}

	public void OnClickDelete(){
		PlayerLocalData.Delete();
	}

こちらもGitHub上にアップしております。
https://github.com/VeniTaku/LocalDataBase-Unity

UnityPackageをGUI操作で簡単に複数作成できる機能

需要が私にあったので作ってみました!

デモ
demo-unitypackager

こちらもGitHub上にアップしております。
https://github.com/VeniTaku/UnityPackager-Unity

おわりに

小さいものばかりですが、なにか少しでもお役に立てましたら幸いです。
以上、Unity Advent Calendar 2016 13日目の記事でした。

明日は、ShiroKuroさんになります。

コメント

タイトルとURLをコピーしました