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



我如何在Unity中比较第一个对象中的字符串变量和第二个对象的字符串?下面是我的问题截图:https://onedrive.live.com/redir?resid=C7A243435ECAB1C0!2948&authkey=!ADg0Uh6Ih1cJKd8&ithint=文件夹%2cpng

谢谢你的回答。

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;
}
}

障碍物:

Vector3 pos;
GameObject player;
bool move = false;
public string ObstacleType = "aaaa";
void Start () {
    player = GameObject.FindWithTag("Player");
    pos = transform.position;
}
public bool Move(bool mo)
{
    if(mo)
        move = true; 
    return move;
}
void Update () {

    if (ObstacleType == "big left" && Input.GetKeyDown(KeyCode.LeftArrow))
        move = false;
    if (move)
        transform.position = player.transform.position;
}

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

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

编辑:
据我所知,您的Obstacle游戏对象有一些子对象。它们中的每一个都有自己的标签(obstacleside_upside_downside_right)和对撞机。由于上面的代码给了您一个NullReferenceException,对我来说,唯一可能的原因是只有主对象有Obstacle.cs组件,而没有子对象,因此上面的行失败了。

编辑2:
如果只有父级应该有脚本,那么这行应该是这样的:

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

相关内容

  • 没有找到相关文章

最新更新