青空の月

Unity, C#, アプリ開発関連について。

MissingScriptを探す

Unity GemsでMissingScriptを修正する プログラムが公開されていてその翻訳。

 missing経験したことがある人にとっては夢の様なプログラム。

 

Missing Scriptsエラーの解消(前編)

http://gamesonytablet.blogspot.jp/2013/03/missing-scripts.html

 Missing Scriptsエラーの解消(後編)

http://gamesonytablet.blogspot.jp/2013/03/missing-scripts_17.html

 

コレを参考にmissingを修正はせずにMissing Scriptが存在するゲームオブジェクトを抽出するだけにしてみた。

 

using UnityEditor;
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using System.Linq;


[InitializeOnLoad]
class MissingScriptChecker : Editor
{

    [MenuItem("GameObject/Missing Script Checker")]
	static void MissingScriptCheckerFunction()
	{
		StartCheck();
	}
	

	static MissingScriptChecker()
	{
		if (EditorApplication.isPlaying || Application.isPlaying)
			return;
		StartCheck();
	}


	static void StartCheck()
	{
		Debug.Log("Run MissingScriptChecker");

		List brokenList =
					// 全てのゲームオブジェクトを見つける
					Resources.FindObjectsOfTypeAll(typeof(GameObject))
					.Cast()
					// 各々のオブジェクトをチェック
					.Where(
						// 全てのコンポーネントを取得
						c => c.GetComponents()
						// null を戻すものごあるか確認
						.Any(o => o == null)
					)
					.ToList();

		foreach (GameObject gobj in brokenList)
			Debug.LogError(gobj.name, gobj);
	}

}