如何将此Lua代码更改为C#for Unity以进行开包模拟

时间:2019-06-04 23:43:22

标签: c# lua

我正在尝试将Lua脚本转换为Unity的C#,我需要帮助。

我尝试学习C#进行转换,但是对C#的理解不是很好。

PackOpening = function(x)     local r = math.random(1,261)     return x[r] end

IconsPack = {"Pele 99 Rated","Ronaldo 97 Rated","Ronaldo 96 Rated","Cruyff 95 Rated","Pele 95 Rated","Ronaldinho 95 Rated","Eusebio 94 Rated","Cruyff 94 Rated","Best 94 Rated","Henry 94 Rated","Ronaldinho 94 Rated","Ronaldo 94 Rated","Van Basten 94 Rated","Lineker 93 Rated","Luis Figo 93 Rated","Eusebio 93 Rated","Best 93 Rated","Gullit 93 Rated","Henry 93 Rated","Van Basten 93 Rated","Del Piero 93 Rated","Van Nistelrooy 93 Rated","Lineker 92 Rated","Rivaldo 92 Rated","Raul 92 Rated","Luis Figo 92 Rated","Stoichkov 92 Rated","Del Piero 92 Rated","Bergkamp 92 Rated","Butragueno 92 Rated","Kluivert 92 Rated","Van Nistelrooy 92 Rated","Shearer 92 Rated","Inzaghi 91 Rated","Kluivert 91 Rated","Cruyff 91 Rated","Micheal Owen 91 Rated","Eusebio 91 Rated","Pele 91 Rated","Shearer 91 Rated","Shevchenko 91 Rated","Van Basten 91 Rated","Hernandez 91 Rated","Klose 91 Rated","Trezeguet 91 Rated","Luis Figo 90 Rated","Best 90 Rated","Henry 90 Rated","Hernandez 90 Rated","Inzaghi 90 Rated","Larsson 90 Rated","Zola 90 Rated","Rivaldo 90 Rated","Ronaldo 90 Rated","Butragueno 90 Rated","Van Nistelrooy","Lineker 89 Rated","Baggio 89 Rated","Laudrup 89 Rated","Cruyff 89 Rated","Eusebio 89 Rated","Shearer 89 Rated","Van Basten 89 Rated","Klose 89 Rated"} print(PackOpening(IconsPack))

我希望math.random函数可能无法正常工作,但请尝试。

1 个答案:

答案 0 :(得分:0)

.NET中没有Random的默认实例,因此您必须创建一个实例。 var的意思是local

数组初始化器的语法稍微冗长一些。 C#是静态(强烈)类型的,但通常可以推断出类型。在这种情况下,数组元素为String,因此数组值和变量为String的数组。元素的范围从0开始。

Func<String[], String>是委托的类型,该委托采用String数组并返回String。不幸的是,在下面的语法中,无法推断类型。

Console.WriteLine有点类似于打印。

var random = new Random();

var IconsPack = new[] { "Pele 99 Rated", "Ronaldo 97 Rated", "Ronaldo 96 Rated", "Cruyff 95 Rated", "Pele 95 Rated", "Ronaldinho 95 Rated", "Eusebio 94 Rated", "Cruyff 94 Rated", "Best 94 Rated", "Henry 94 Rated", "Ronaldinho 94 Rated", "Ronaldo 94 Rated", "Van Basten 94 Rated", "Lineker 93 Rated", "Luis Figo 93 Rated", "Eusebio 93 Rated", "Best 93 Rated", "Gullit 93 Rated", "Henry 93 Rated", "Van Basten 93 Rated", "Del Piero 93 Rated", "Van Nistelrooy 93 Rated", "Lineker 92 Rated", "Rivaldo 92 Rated", "Raul 92 Rated", "Luis Figo 92 Rated", "Stoichkov 92 Rated", "Del Piero 92 Rated", "Bergkamp 92 Rated", "Butragueno 92 Rated", "Kluivert 92 Rated", "Van Nistelrooy 92 Rated", "Shearer 92 Rated", "Inzaghi 91 Rated", "Kluivert 91 Rated", "Cruyff 91 Rated", "Micheal Owen 91 Rated", "Eusebio 91 Rated", "Pele 91 Rated", "Shearer 91 Rated", "Shevchenko 91 Rated", "Van Basten 91 Rated", "Hernandez 91 Rated", "Klose 91 Rated", "Trezeguet 91 Rated", "Luis Figo 90 Rated", "Best 90 Rated", "Henry 90 Rated", "Hernandez 90 Rated", "Inzaghi 90 Rated", "Larsson 90 Rated", "Zola 90 Rated", "Rivaldo 90 Rated", "Ronaldo 90 Rated", "Butragueno 90 Rated", "Van Nistelrooy", "Lineker 89 Rated", "Baggio 89 Rated", "Laudrup 89 Rated", "Cruyff 89 Rated", "Eusebio 89 Rated", "Shearer 89 Rated", "Van Basten 89 Rated", "Klose 89 Rated" };
Func<String[], String> PackOpening = (x) => { var r = random.Next(0, x.Length - 1); return x[r]; };
Console.WriteLine(PackOpening(IconsPack));

如您所见,通过适当地替换库函数,语法改写和使用静态类型,可以非常简单。编译时类型推断使它更易于阅读。