是否有一种方便的方法来获取变量并将它们转换为代码可读的内容?我现在看到的内容有点像这样:
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();
}发布于 2013-12-16 06:36:46
像这样吗?
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));
}
}
}发布于 2013-12-16 06:34:41
尝试使用Dictionary<>。它将允许您拥有键值对。所以您的密钥是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);
}发布于 2013-12-16 13:27:12
我不知道我是否理解你,但给你的头衔.在命令中,我假设您正在寻找一种在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方法相结合,使用字典将标识符映射到方法。
https://stackoverflow.com/questions/20604714
复制相似问题