Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用字符串数组初始化类?_C#_Unity3d - Fatal编程技术网

C# 如何使用字符串数组初始化类?

C# 如何使用字符串数组初始化类?,c#,unity3d,C#,Unity3d,我有一个脚本,可以从着色器中按名称获取属性: 在底部,我通过给属性名“Vector1_570450D5”来更改一个属性值 在本例中,有5个属性,因此我希望能够做到: material.SetFloat(myProperties.Vector1_570450D5, currentValue); 或 所以我想让这个脚本带有属性executealways来创建一个只用于获取属性的编辑器脚本,然后在这个mono脚本中使用属性,就像我给出的例子一样 仅针对您的标题:您有一个列表,而不是数组;) 在用

我有一个脚本,可以从着色器中按名称获取属性: 在底部,我通过给属性名“Vector1_570450D5”来更改一个属性值

在本例中,有5个属性,因此我希望能够做到:

material.SetFloat(myProperties.Vector1_570450D5, currentValue);


所以我想让这个脚本带有属性executealways来创建一个只用于获取属性的编辑器脚本,然后在这个mono脚本中使用属性,就像我给出的例子一样

仅针对您的标题:您有一个
列表,而不是数组;)


在用值填充它之前,您需要初始化它。您还可以与字段声明一起执行此操作:

public List<string> names = new List<string>();

如果我理解正确的话,您正在进一步寻找类似

public string this[int index] => names[i];
这将允许您直接通过

myClass[i];
而不是

myClass.names[i];

这很好用。如果我想做一些更复杂的事情,例如,我将键入myClass.1或myClass.2,其中数字1和2是从“I”变量中提取的。i、 ToString()是例如“1”“2”“3”的名称,因此,如果我键入myClass,它会将数字显示为类似myClass.1 myClass.2的属性,以便稍后在其他脚本中使用这些数字作为int或将其转换为字符串。我不想在列表myClass.names上循环,而是想直接访问属性。@bendivonim使用
字典
怎么样?或者你是说像
public int this[int index]=>names[i]
这样您就可以使用
myClass[i]
而不是
myClass.names[i]?第二个公共int-this[int-index]=>命名[i];我如何在清醒时的for循环中使用它?公共字符串this[int index]=>命名[i];获取错误。不,这将是
MyClass
的一个属性,您实际上不会在循环中使用它。。。也许我还没有完全理解您的整个用例/目标:)
public class MyClass
{
    public List<string> names = new List<string>();

    public MyClass(List<string> initialNames)
    {
        // This creates a new List<string> copying all elements of initialNames
        names = new List<string>(initialNames);
    }
}
var myClass = new MyClass(names);
public string this[int index] => names[i];
myClass[i];
myClass.names[i];