Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.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#/Unity-如何比较字符串变量?_C#_String_Variables_Unity3d_Compare - Fatal编程技术网

C#/Unity-如何比较字符串变量?

C#/Unity-如何比较字符串变量?,c#,string,variables,unity3d,compare,C#,String,Variables,Unity3d,Compare,如何在Unity中比较第一个对象中的字符串变量和第二个对象中的字符串? 下面是我的问题的截图: 谢谢你的回答 PlayerMove: using UnityEngine; using System.Collections; public class PlayerMove : MonoBehaviour { Vector3 pos; public float speed; char mv; string ObstacleTypePlayer; void Start () { po

如何在Unity中比较第一个对象中的字符串变量和第二个对象中的字符串? 下面是我的问题的截图:

谢谢你的回答

PlayerMove:

using UnityEngine;
using System.Collections;

public class PlayerMove : MonoBehaviour {

Vector3 pos;
public float speed;
char mv;
string ObstacleTypePlayer;


void Start () {

    pos = transform.position;

}

void Update () {

    if (Input.GetKeyDown(KeyCode.LeftArrow) && mv != 'l')
        pos.x -= speed;

    if (Input.GetKeyDown(KeyCode.RightArrow))
        pos.x += speed;

    if (Input.GetKeyDown(KeyCode.UpArrow) && mv != 'u')
        pos.y += speed;

    if (Input.GetKeyDown(KeyCode.DownArrow) && mv != 'd')
        pos.y -= speed;


    transform.position = pos;
}


void OnTriggerEnter2D(Collider2D col)
{

    if (col.CompareTag("obstacle"))
    {
        col.gameObject.GetComponent<Obstacle>().Move(true);
        print("obstacle");
    }

    if (col.gameObject.GetComponent<Obstacle>().ObstacleType == "big left") // not true, but if Obstacle.ObstacleType == "big left"
    {


        if (col.CompareTag("side_up"))
            NotMove('d');

        else if (col.CompareTag("side_down"))
            NotMove('u');

        else if (col.CompareTag("side_right"))
            NotMove('l');

    }

}

void OnTriggerStay2D(Collider2D col)
{

}


void OnTriggerExit2D(Collider2D col)
{
    if (col.CompareTag("side_up"))
        NotMove(' ');

    else if (col.CompareTag("side_down"))
        NotMove(' ');

    else if (col.CompareTag("side_right"))
        NotMove(' ');

}

char NotMove(char z)
{
    mv = z;
    return mv;
}

}

与调用
Move()
函数的方式完全相同:

col.gameObject.GetComponent<Obstacle>().ObstacleType == "big left"

与调用
Move()
函数的方式完全相同:

col.gameObject.GetComponent<Obstacle>().ObstacleType == "big left"


在问题中包含您的代码。您可以将字符串与
=
进行比较,通常是.obja.TheString==objb.TheString。但是,请与其他对象和脚本字符串进行比较,因为问题似乎与该比较没有直接关系,请包括整个类,而不仅仅是片段。在Unity中,在不同游戏对象中的脚本之间进行通信的唯一方法是使用“GameObject.SendMessage()”在一个游戏对象的脚本中创建一个公共游戏对象,并在编辑器中将另一个游戏对象分配给它。然后,将字符串发送到公共方法,例如:public void receiveString(string anyString)。现在,您可以将此字符串与其他字符串进行比较。将您的代码包括在问题中。您通常将字符串与
=
进行比较。obja.TheString==objb.TheString但与其他对象和脚本字符串进行比较。由于问题似乎与该比较没有直接关系,因此,请包括整个类,而不仅仅是片段。唯一的方法是o Unity中不同游戏对象中的脚本之间的通信使用“GameObject.SendMessage()”在其中一个游戏对象的脚本中创建一个公共游戏对象,并在编辑器中将另一个游戏对象分配给它。然后,将字符串发送到公共方法,例如:public void receiveString(string anyString)。现在,您可以在另一个字符串中比较此字符串。我知道,但它是错误的:NullReferenceException:对象引用未设置为对象资产的实例/Scripts/PlayerMove.cs 46I很久以前尝试过。示例:d这是访问另一个脚本中变量的正确方法。如果您获得NullReferenceException,则问题在于除此之外,一切都是正确的:您可能希望在if(col.compareTag(“障碍”)的末尾添加一个
返回;
)由于碰撞对象只能有一个标记,因此不进一步检查或使第二个块成为
否则。
我知道,但这是错误的:NullReferenceException:object reference未设置为对象的实例Assets/Scripts/PlayerMove.cs 46我很久以前尝试过。:d访问Other中变量的正确方法是什么r脚本。如果您得到一个NullReferenceException,那么问题就出在其他地方。但是,在哪里,一切都是正确的:您可能希望在
If(col.compareTag(“障碍”)
的末尾添加一个
return;
,以避免进一步检查,或者使第二个块成为
else If
,因为碰撞对象只能有一个标记。
col.transform.root.GetComponent<Obstacle>().ObstacleType == "big left"