Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.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_Gameobject - Fatal编程技术网

C#用于物品拾取选择的统一脚本

C#用于物品拾取选择的统一脚本,c#,unity3d,gameobject,C#,Unity3d,Gameobject,我目前有一个脚本,它将2个预置实例化为游戏对象。它们附加了一个脚本,游戏对象被设置为false,然后被添加到我的清单数组中。这是另一个脚本,但我的问题是另一个未被选中的游戏对象仍然存在。应该是你有两个选择。一旦你拿了一个,另一个就消失了。我不知道怎么做,谁能帮我一下吗 public int moralityCounter=0; public bool Inventory; public void Store() { if (gameObject.CompareTag("Good"))

我目前有一个脚本,它将2个预置实例化为游戏对象。它们附加了一个脚本,
游戏对象
被设置为false,然后被添加到我的
清单
数组中。这是另一个脚本,但我的问题是另一个未被选中的游戏对象仍然存在。应该是你有两个选择。一旦你拿了一个,另一个就消失了。我不知道怎么做,谁能帮我一下吗

public int moralityCounter=0;
public bool Inventory;

public void Store()
{
    if (gameObject.CompareTag("Good"))
    {
        moralityCounter++;
        Debug.Log(moralityCounter);
        gameObject.SetActive(false);
    }
    if (gameObject.CompareTag("Bad"))
    {
        moralityCounter--;
        Debug.Log(moralityCounter);
        gameObject.SetActive(false);
    }

}

如果只有单个
good
和单个
bad
标记对象,则可以将所有标记为good和bad的对象设置为非活动状态

private void DeactivateAllGoodBads() 
{
    // Deactivate all goods
    GameObject[] goodObjects = GameObject.FindGameObjectsWithTag("Good");
    foreach (GameObject goodObject in goodObjects)
    {
        goodObject.SetActive(false);
    }

    // Deactivate all bads
    GameObject[] badObjects = GameObject.FindGameObjectsWithTag("Bad");
    foreach (GameObject badObject in badObjects)
    {
        badObject.SetActive(false);
    }
}

public void Store()
{
    bool isGood = gameObject.CompareTag("Good");
    bool isBad = gameObject.CompareTag("Bad");
    if (isGood)
    {
        moralityCounter++;
        Debug.Log(moralityCounter);
    }

    if (isBad)
    {
        moralityCounter--;
        Debug.Log(moralityCounter);
    }

    if (isGood || isBad)
    {
        DeactivateAllGoodBads();
    }  
}
如果有多个,您可以执行一些操作,例如仅禁用距离存储对象较远的对象

private void DeactivateCloseGoodBads(Vector3 position, float maxDistance)
{
    // Deactivate close goods
    GameObject[] goodObjects = GameObject.FindGameObjectsWithTag("Good");
    foreach (GameObject goodObject in goodObjects)
    {
        // Check distance of found good
        if (Vector3.Distance(position, goodObject.transform.position) <= maxDistance) {
            goodObject.SetActive(false);
        }
    }

    // Deactivate close bads
    GameObject[] badObjects = GameObject.FindGameObjectsWithTag("Bad");
    foreach (GameObject badObject in badObjects)
    {
        // Check distance of found bad
        if (Vector3.Distance(position, badObject.transform.position) <= maxDistance) {
            badObject.SetActive(false);
        }
    }
}

public void Store()
{
    bool isGood = gameObject.CompareTag("Good");
    bool isBad = gameObject.CompareTag("Bad");
    if (isGood)
    {
        moralityCounter++;
        Debug.Log(moralityCounter);
    }

    if (isBad)
    {
        moralityCounter--;
        Debug.Log(moralityCounter);
    }

    if (isGood || isBad) 
    {
        DeactivateCloseGoodBads(gameObject.transform.position, 10f);
    }

}
private void deactivateCloseGoodbad(矢量3位置,浮点最大距离)
{
//停用封闭货物
GameObject[]goodObjects=GameObject.FindGameObjectsSwithTag(“好”);
foreach(goodObjects中的游戏对象goodObject)
{
//检查发现良好的电缆的距离

if(矢量3.距离(位置,goodObject.变换.位置)
另一个未被选中的游戏对象
你这是什么意思?你能给我们看一下你的代码吗?我真的不明白你到底想实现什么在另一个游戏对象上设置active to false,所以当我拿绿苹果时,黄苹果也应该消失。苹果的位置是什么?黄苹果是X:-13.86Y:5.36 Z:-0.3812452绿色的苹果是X:12.79 Y:5.16 Z:-03812452,这是一张生成点的图片:另外,我确保了Hitbox不会发生碰撞,我正在unity 2D中工作,第二个建议中的位置用红色下划线表示。transform不包含位置定义,也没有可访问的扩展方法location ac无法找到转换的第一个参数类型(是否缺少指令或程序集引用)我想他指的是transform.position,没有transform.location这样的东西来表示统一。试试transform.position,告诉我它是否有效。代码没有错误,但在我取了第一个苹果后,第二个苹果并没有消失。Katada,是的,我指的是transform.position。谢谢。@SIGMA你在两个对象上都写了这个脚本吗?第二个之后我将有多个好的和坏的项目在一个场景