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,我刚开始学习在Unity中编写代码(C#),我正在努力创建我自己的太空入侵者克隆,但我仍然停留在逐步提高游戏中所有外星预设的速度的逻辑上,现在我让它们从左到右向下移动。如果有人能向我提供/或解释如何实现这一点的编码逻辑,我将不胜感激 可以统一给预制件一个标签。然后可以使用特定标签访问所有预制件。这是处理多个预制件的好方法,因为它允许您以任何方式对预制件进行分组 这是一个javascript代码片段,但它也适用于c 函数makechild(){ objs=GameObject.FindGameO

我刚开始学习在Unity中编写代码(C#),我正在努力创建我自己的太空入侵者克隆,但我仍然停留在逐步提高游戏中所有外星预设的速度的逻辑上,现在我让它们从左到右向下移动。如果有人能向我提供/或解释如何实现这一点的编码逻辑,我将不胜感激

可以统一给预制件一个标签。然后可以使用特定标签访问所有预制件。这是处理多个预制件的好方法,因为它允许您以任何方式对预制件进行分组

这是一个javascript代码片段,但它也适用于c

函数makechild(){
objs=GameObject.FindGameObjectsWithTag(“要分组的对象”);
for(objs中的obj){
obj.transform.parent=parentObj.transform;
}
}
在c语言中#

GameObject[]太空入侵者;
整数长度;
//在第一帧更新之前调用Start
void Start()
{
SpaceInvactor=GameObject.FindGameObjectsWithTag(“您的标签”);
长度=太空入侵者。长度;
}
//每帧调用一次更新
void increasespeed()
{
for(int i=0;i

如果你的速度/移动由另一个脚本控制,这应该是可行的,但如果不是,你可以在increasespeed()函数中轻松增加太空入侵者的速度。

而不是修改场景中的每个外星人来提高速度,考虑有一个公共可访问的变量,所有这些外星人都可以定义它们的速度。这样,您只需要修改这个单一变量,每个外星人如何处理它取决于他们。
GameObject[] spaceinvader;
int length;
// Start is called before the first frame update
void Start()
{
    spaceinvader = GameObject.FindGameObjectsWithTag("your tag");
    length = spaceinvader.Length;
}

// Update is called once per frame
void increasespeed()
{
    for (int i = 0; i < length; i++)
    {
        spaceinvader[i].GetComponent<yourspeedscript>().speed += 1;
    }
}