是否有一种方便的方法来获取变量并将其转换为代码可读的内容?我现在所看到的有点像这样:
int buttonNumber = 3;
int buttonShow = 0;
ButtonChanger bC;
void Update () {
if(buttonNumber == 1) {
buttonShow = bC.Change1;
}
if(buttonNumber == 2) {
buttonShow = bC.Change2;
}
if(buttonNumber == 3) {
buttonShow = bC.Change3;
}
我希望能够做的更像是这样:
int buttonNumber = 3;
int buttonShow = 0;
ButtonChanger bC;
void Update () {
buttonShow = ("bC.Change" + buttonNumber).toCode();
}
答案 0 :(得分:1)
尝试使用Dictionary<&gt ;.它将允许您拥有键值对。所以你的密钥是bC.Change,你可以使用Key()方法
来检索密钥例如
Dictionary<string, int> data = new Dictionary<string, int>();
data.Add("Change1", 123);
data.Add("Change2", 456);
foreach (string key in data.Keys)
{
Console.WriteLine(key);
}
答案 1 :(得分:1)
这样的东西?
using System;
namespace ConsoleApplication1
{
enum ButtonChanger
{
Change1 = 1,
Change2 = 2,
Change3 = 3
}
class Program
{
static void Main(string[] args)
{
var changer = GetButtonChanger(2);
Console.WriteLine(changer);
Console.WriteLine((int)changer);
}
private static ButtonChanger GetButtonChanger(int i)
{
return (ButtonChanger)Enum.Parse(typeof(ButtonChanger), string.Format("Change{0}", i));
}
}
}
答案 2 :(得分:0)
我不确定我是否理解你,但鉴于你的头衔 ...命令我假设你正在寻找一种在ButtonChanger中执行方法的通用方法。
如果您的ButtonChanger
课程类型为Component
或GameObject
,则可以使用SendMessage方法:
<强> MyClass.cs 强>
const string ButtonShowPrefix = "Change";
ButtonChanger bC;
void Update () {
bC.SendMessage (ButtonShowPrefix + buttonNumber, SendMessageOptions.DontRequireReceiver);
}
<强> ButtonChanger.cs 强>
void Change1 () {
// do stuff for button 1
}
void Change2 () {
// do stuff for button 2
}
请注意,可以将参数传递给被调用的方法,但无法返回值。因此,如果您需要州信息,则必须使用ButtonChanger
中的公共成员解决此问题。
由于SendMessage
被认为有些昂贵,所以如果不采取任何措施,应避免不必要的电话。
如果事情变得越来越复杂,我建议将此与gulshanm01方法相结合,使用字典将标识符映射到方法。