C# 创建具有for循环生成id';s
我不熟悉游戏编程和C#,但我有一些javaScript和PHP编程经验 好了,我们开始吧,我有一个C#脚本,我想用它来生成怪物。我一直在Youtube上关注Tom Adamson,直到他开始生成随机值,如图所示: 这是我的剧本:C# 创建具有for循环生成id';s,c#,for-loop,unity3d,C#,For Loop,Unity3d,我不熟悉游戏编程和C#,但我有一些javaScript和PHP编程经验 好了,我们开始吧,我有一个C#脚本,我想用它来生成怪物。我一直在Youtube上关注Tom Adamson,直到他开始生成随机值,如图所示: 这是我的剧本: using UnityEngine; using System.Collections; public class myMonster : MonoBehaviour { public class aMonster { //The prop
using UnityEngine;
using System.Collections;
public class myMonster : MonoBehaviour {
public class aMonster {
//The properties
public int id;
public int age;
public string name;
public string race;
public int health;
//A method
public void monsterData() {
print("ID: " + id);
print("Race: " + race);
print("Name: " + name);
print("Age: " + age);
print("Health: " + health);
}
} // End of class definition
//-----------------------------------------------------------------------------------------
void Start () {
aMonster[] bigMonster = new aMonster[51];
for (int i = 1; i <= 50;) {
bigMonster[i] = new aMonster();
bigMonster[i].id = i;
bigMonster[i].name = "Gorky";
bigMonster[i].race = "Orc";
bigMonster[i].age = 320;
bigMonster[i].health = 200;
i++;
bigMonster[i] = new aMonster();
bigMonster[i].id = i;
bigMonster[i].name = "Runathu";
bigMonster[i].race = "Shaman";
bigMonster[i].age = 670;
bigMonster[i].health = 100;
i++;
}
for (int i = 1; i <= 2; i++) {
bigMonster[i].monsterData();
}
}
}
谁能告诉我我做错了什么?我猜i++是错误的方法,因为第三个怪物导致了错误
非常感谢您的帮助
aMonster[] bigMonster = new aMonster[51];
意味着你有51个怪物(最大索引=50),但你在一个循环中增加了两次i,在最后一次迭代中i=50,所以你试图达到aMonster[51]
修正:
从i=0开始循环并在i=49结束,c#中的索引从0开始而不是从1开始
我还建议您将代码转换为:
for (int i = 0; i < 50; i+=2)
{
bigMonster[i] = new aMonster();
bigMonster[i].id = i;
bigMonster[i].name = "Gorky";
bigMonster[i].race = "Orc";
bigMonster[i].age = 320;
bigMonster[i].health = 200;
bigMonster[i+1] = new aMonster();
bigMonster[i+1].id = i;
bigMonster[i+1].name = "Runathu";
bigMonster[i+1].race = "Shaman";
bigMonster[i+1].age = 670;
bigMonster[i+1].health = 100;
}
for(int i=0;i<50;i+=2)
{
大怪物[i]=新的阿蒙斯特();
大怪物[i].id=i;
大怪物[i].name=“高尔基”;
大怪物[i].race=“兽人”;
大怪物[i].年龄=320;
大怪物[i].生命值=200;
大怪物[i+1]=新的阿蒙斯特();
大怪物[i+1].id=i;
大怪物[i+1].name=“Runathu”;
大怪物[i+1]。种族=“萨满”;
大怪物[i+1]。年龄=670;
大怪物[i+1]。生命值=100;
}
for循环的增量应该在for循环的定义中完成,它看起来更干净
编辑:
使用List()
var bigMonster=newlist();
var-id=0;
对于(int i=0;i
意味着你有51个怪物(最大索引=50),但你在一个循环中增加了两次i,在最后一次迭代中i=50,所以你试图达到aMonster[51]
修正:
从i=0开始循环并在i=49结束,c#中的索引从0开始而不是从1开始
我还建议您将代码转换为:
for (int i = 0; i < 50; i+=2)
{
bigMonster[i] = new aMonster();
bigMonster[i].id = i;
bigMonster[i].name = "Gorky";
bigMonster[i].race = "Orc";
bigMonster[i].age = 320;
bigMonster[i].health = 200;
bigMonster[i+1] = new aMonster();
bigMonster[i+1].id = i;
bigMonster[i+1].name = "Runathu";
bigMonster[i+1].race = "Shaman";
bigMonster[i+1].age = 670;
bigMonster[i+1].health = 100;
}
for(int i=0;i<50;i+=2)
{
大怪物[i]=新的阿蒙斯特();
大怪物[i].id=i;
大怪物[i].name=“高尔基”;
大怪物[i].race=“兽人”;
大怪物[i].年龄=320;
大怪物[i].生命值=200;
大怪物[i+1]=新的阿蒙斯特();
大怪物[i+1].id=i;
大怪物[i+1].name=“Runathu”;
大怪物[i+1]。种族=“萨满”;
大怪物[i+1]。年龄=670;
大怪物[i+1]。生命值=100;
}
for循环的增量应该在for循环的定义中完成,它看起来更干净
编辑:
使用List()
var bigMonster=newlist();
var-id=0;
对于(int i=0;i从0开始迭代
for (int i = 1; i <= 50;)
for(int i=1;i从0开始迭代
for (int i = 1; i <= 50;)
for(int i=1;i为了使事情更简单,我将使用列表而不是数组。表示法也将更简单,例如:
var bigMonster = new list<aMonster>();
for(int i = 1; i <=50; )
{
var mon1 = new aMonster{id = i, name = "Gorky", race = "orc", age = 320, health = 200};
i++;
var mon2 = new aMonster{id = i, name = "Runathu", race = "Shaman", age = 670, health = 100};
i++;
var mon3 = new aMonster{id = i, name = "Tiny", race = "Spider", age = 90, health = 45};
i++;
bigMonster.Add(mon1);
bigMonster.Add(mon2);
bigMonster.Add(mon3);
}
foreach(aMonster a in bigMonster)
{
a.monsterData();
}
var bigMonster=newlist();
对于(int i=1;i为了使事情变得更简单,我将使用列表而不是数组。表示法也将更简单,例如:
var bigMonster = new list<aMonster>();
for(int i = 1; i <=50; )
{
var mon1 = new aMonster{id = i, name = "Gorky", race = "orc", age = 320, health = 200};
i++;
var mon2 = new aMonster{id = i, name = "Runathu", race = "Shaman", age = 670, health = 100};
i++;
var mon3 = new aMonster{id = i, name = "Tiny", race = "Spider", age = 90, health = 45};
i++;
bigMonster.Add(mon1);
bigMonster.Add(mon2);
bigMonster.Add(mon3);
}
foreach(aMonster a in bigMonster)
{
a.monsterData();
}
var bigMonster=newlist();
for(int i=1;i)您错误地使用了for循环。您应该为每个循环添加一个怪物,并且每个循环i递增。for(int i=1;我保留它i@Tobberoth:这里的用法有点奇怪,但本身并不错误。只要分号仍然在那里标记部分开始/结束的位置,就可以省略paren中的三个部分中的任何一个。如果有三种不同的类型,祝你好运,每次迭代都会添加一个怪物。当你已经熟悉了to以一种可接受的方式这样做,你可能已经完成了这里正在做的事情。@cHao:没错。我想最基本的概念只是…奇怪。为什么要将单个怪物多次添加到阵列中,这是没有意义的。要么单独创建怪物并添加到阵列中,要么使用for循环多次添加怪物。我如果你想让怪物均匀分布,你可以预先计算出每个怪物的数量,然后将每个怪物添加X次,或者你可以简单地继续添加一组怪物,直到你有足够的怪物为止。两者都可以,但后者需要较少的准备工作。你正在使用for循环不正确。您应该为每个循环添加一个怪物,并且每个循环i都会递增。for(int i=1;我保留它i@Tobberoth:这里的用法有点奇怪,但本身并不错误。只要分号仍然在那里标记部分开始/结束的位置,就可以省略paren中的三个部分中的任何一个。如果有三种不同的类型,祝你好运,每次迭代都会添加一个怪物。当你已经熟悉了to以一种可接受的方式这样做,你可能已经完成了这里正在做的事情。@cHao:没错。我想最基本的概念只是…奇怪。为什么要将单个怪物多次添加到阵列中,这是没有意义的。要么单独创建怪物并添加到阵列中,要么使用for循环多次添加怪物。我如果你想让怪物分布均匀,你可以预先计算出每个怪物的数量,然后将每个怪物添加X次,或者你可以继续添加一组怪物,直到你有足够的怪物为止。两者都可以,但后者需要更少的准备工作。谢谢你帮助我获得ng开始,我现在从0开始,到49结束,但是如何继续添加怪物呢?我在理解如何正确使用for循环时遇到了问题。下面是我现在所做的,它显示了相同的错误:void Start(){aMonster[]bigmonester=new aMonster[50];for(int i=0;i@Dan LeviTømta现在您在for循环中又增加了一次,所以情况是一样的。首先,您可以使用列表并避免索引自动失效。我建议您使用我的c