1. Натыркиваем визард из меню "RPC/RPC Wizard (OwnerEventRPCWithoutParameters)".
2. Вводим имя метода (например, KickAss), тыркаем Create.
3. Жмякаем Ctrl+V в нужном скрипте,
получаем:
#region KickAss
/// <summary>
/// KickAss
/// </summary>
//это событие инициируется с оунера (не по сети)
void Owner_KickAss()
{
networkView.RPC("CreatorRPC_KickAss", RPCMode.Server);
}
[RPC]
void CreatorRPC_KickAss()
{
networkView.RPC("OthersRPC_KickAss", RPCMode.Others);
}
[RPC]
void OthersRPC_KickAss()
{
Debug.Log("OthersRPC_KickAss");
}
#endregion
Эдитор скрипт вот:
Синтаксис:
Используется csharp
using UnityEditor;
using UnityEngine;
//пока рпц без параметров!
public class RPCWizard : ScriptableWizard
{
public string method_name = "GenericMethod";
[MenuItem("RPC/RPC Wizard (OwnerEventRPCWithoutParameters)")]
static void CreateWizard()
{
ScriptableWizard.DisplayWizard<RPCWizard>("Create RPC Code", "Create");
}
void OnWizardCreate()
{
string result = Get_OwnerEventRPCWithoutParameters_FromTemplate(method_name);
//Debug.Log(result);
EditorGUIUtility.systemCopyBuffer = result;
}
void OnWizardUpdate()
{
helpString = "Please set the name of the RPC!";
}
static string Get_OwnerEventRPCWithoutParameters_FromTemplate(string name)
{
char w = '"';
string str = "";
str += @"
#region "+name+@"
/// <summary>
/// "+name+@"
/// </summary>
//это событие инициируется с оунера (не по сети)
void Owner_"+name+@"()
{
networkView.RPC("+w+"CreatorRPC_"+name+w+@", RPCMode.Server);
}
[RPC]
void CreatorRPC_"+name+@"()
{
networkView.RPC("+w+"OthersRPC_"+name+w+@", RPCMode.Others);
}
[RPC]
void OthersRPC_"+name+@"()
{
Debug.Log("+w+"OthersRPC_"+name+w+@");
}
#endregion";
return str;
}
}
using UnityEngine;
//пока рпц без параметров!
public class RPCWizard : ScriptableWizard
{
public string method_name = "GenericMethod";
[MenuItem("RPC/RPC Wizard (OwnerEventRPCWithoutParameters)")]
static void CreateWizard()
{
ScriptableWizard.DisplayWizard<RPCWizard>("Create RPC Code", "Create");
}
void OnWizardCreate()
{
string result = Get_OwnerEventRPCWithoutParameters_FromTemplate(method_name);
//Debug.Log(result);
EditorGUIUtility.systemCopyBuffer = result;
}
void OnWizardUpdate()
{
helpString = "Please set the name of the RPC!";
}
static string Get_OwnerEventRPCWithoutParameters_FromTemplate(string name)
{
char w = '"';
string str = "";
str += @"
#region "+name+@"
/// <summary>
/// "+name+@"
/// </summary>
//это событие инициируется с оунера (не по сети)
void Owner_"+name+@"()
{
networkView.RPC("+w+"CreatorRPC_"+name+w+@", RPCMode.Server);
}
[RPC]
void CreatorRPC_"+name+@"()
{
networkView.RPC("+w+"OthersRPC_"+name+w+@", RPCMode.Others);
}
[RPC]
void OthersRPC_"+name+@"()
{
Debug.Log("+w+"OthersRPC_"+name+w+@");
}
#endregion";
return str;
}
}
Визард достаточно специфический .
Хочу еще добавить параметров и сделать кнопочку которая будет генерить чуть другой код (без первого метода).