この記事は Unity Advent Calendar 2016 13日目の記事です。
今日までの記事を全て読ませていただいてますが、どれも面白いですね。
2もあるようですのでこちらも是非是非!
私からは、「(私にとって)役に立っている自作Util」をご紹介させていただきたいと思います。
既に何点かはご紹介させていただいてますが改めて、ご紹介させて頂ければと思います
実機上(ゲーム内)でメモリ使用量を表示してみる 〜iOS&Android〜
Unityのプロファイラーでのメモリ使用量の計測は
Unity社にお問い合わせしたところデバッグ用途ということでしたので、
実際に実機上で使用されているメモリ使用量を取得したい!
っということでネイティブプラグインを作成してみました。
こちらのGitHubに置いてあります。
https://github.com/VeniTaku/MemoryChecker-Unity
これを↓こんな感じで呼び出していただくと、メモリ使用量を取得できます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
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を切り替えれる機能を作ってみました。
これもGitHub上にアップしております
https://github.com/VeniTaku/EditorSceneActiveSwitcher-Unity
特定のClassを簡単にローカルデータ(ストレージ内)に保存(セーブ)する機能
こんなClassがあったとして
1 2 3 4 5 6 |
[System.Serializable] public class PlayerData{ public string name; public int hp; public int mp; } |
これを、簡単に保存したり、読み込んだりしたいなー。
っという時にこんな感じにできます。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
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クラスがあるとしたらこんな感じに使えます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
[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操作で簡単に複数作成できる機能
需要が私にあったので作ってみました!
こちらもGitHub上にアップしております。
https://github.com/VeniTaku/UnityPackager-Unity
おわりに
小さいものばかりですが、なにか少しでもお役に立てましたら幸いです。
以上、Unity Advent Calendar 2016 13日目の記事でした。
明日は、ShiroKuroさんになります。
コメント