三个脚本。
Doxygen 生成的文件位置在与 Assets 同级的 Documentation 文件夹内,Doxyfile 与 GenDoc.command 同级,都在 Assets/FinGameWorks/Scripts/Documentation/ 内
JZDoxygenManager.cs
using UnityEngine;
using UnityEditor;
using System.Collections;
using System.Diagnostics;
namespace FinGameWorks.Editor
{
public class JZDoxygenManager : EditorWindow{
[MenuItem ("Window/FinGameWorks/Documentation/Gen Doc")]
static void Init ()
{
RegenDoc();
}
public static void RegenDoc ()
{
Process proc = new System.Diagnostics.Process ();
proc.StartInfo.FileName = "open";
proc.StartInfo.Arguments = "-b com.apple.terminal "+ Application.dataPath + "/FinGameWorks/Scripts/Documentation/GenDoc.command";
proc.Start();
}
}
}
GenDoc.command
cd "$(dirname "$([ -L $0 ] && readlink -f $0 || echo $0)")"
doxygen Doxyfile
echo “Generation Done”
sleep 1
killall Terminal
JZ_DocumentationWindow.cs
using UnityEngine;
using System.Reflection;
using System.IO;
namespace FinGameWorks.Documentation
{
#if UNITY_EDITOR
using UnityEditor;
/// <summary>
/// 文档浏览器窗口
/// </summary>
[InitializeOnLoad]
public class JZ_DocumentationWindow : ScriptableObject
{
static BindingFlags Flags = BindingFlags.Public | BindingFlags.Static | BindingFlags.FlattenHierarchy;
[MenuItem("Window/FinGameWorks/Documentation/Show Doc")]
static void Open()
{
#if (UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0)
var type = Types.GetType ("UnityEditor.Web.WebViewEditorWindow", "UnityEditor.dll");
var methodInfo = type.GetMethod ("Create", Flags);
methodInfo = methodInfo.MakeGenericMethod (typeof(JZ_DocumentationWindow));
#elif UNITY_5_4
var type = Types.GetType ("UnityEditor.Web.WebViewEditorWindowTabs", "UnityEditor.dll");
var methodInfo = type.GetMethod ("Create", Flags);
methodInfo = methodInfo.MakeGenericMethod (type);
#endif
string path = Directory.GetParent(Application.dataPath).FullName + "/Documentation/html/index.html";
methodInfo.Invoke(null, new object[]
{
"Documentation",
path,
200, 530, 800, 600
});
}
}
#endif
}