Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.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#XNA-库存/可破坏地形和;收集_C#_.net_Xna_Inventory - Fatal编程技术网

C#XNA-库存/可破坏地形和;收集

C#XNA-库存/可破坏地形和;收集,c#,.net,xna,inventory,C#,.net,Xna,Inventory,我无法在标题中很好地描述这个问题。如果某个人有编辑权限,并且可以更好地表达它,请随意使用 所以我有一个很好的小地形,它是可以破坏的,但是如果有人,比如说,破坏了一棵树,我怎么能让它把一棵树添加到他们的目录中呢 我不是在寻找代码,只是一个方法 每个块都有自己的类,所有这些类都继承自基类块,当该块被销毁时,它会丢弃一种可拾取的小块 我能做到这一点,但我很困惑,因为我的想法是你可以打破区块,把它们放在其他地方(是的,有点像Minecraft),那么我该如何让这个库存系统工作呢?我想了两天,什么都没有得

我无法在标题中很好地描述这个问题。如果某个人有编辑权限,并且可以更好地表达它,请随意使用

所以我有一个很好的小地形,它是可以破坏的,但是如果有人,比如说,破坏了一棵树,我怎么能让它把一棵树添加到他们的目录中呢

我不是在寻找代码,只是一个方法

每个块都有自己的类,所有这些类都继承自基类块,当该块被销毁时,它会丢弃一种可拾取的小块


我能做到这一点,但我很困惑,因为我的想法是你可以打破区块,把它们放在其他地方(是的,有点像Minecraft),那么我该如何让这个库存系统工作呢?我想了两天,什么都没有得到。

物品需要某种ID码。很明显,你已经有了一个存储世界本身的工具

当你把它砍下来的时候,它有一种“树”

“树”+砍=>“砍下的树”


当它被拾起时,你从世界上移除一个被砍掉的树图形,并将一个被砍掉的树项目放入玩家的库存中。

项目需要某种ID代码。很明显,你已经有了一个存储世界本身的工具

当你把它砍下来的时候,它有一种“树”

“树”+砍=>“砍下的树”


当它被拾起时,你从世界上移除砍掉的树图形,并将一个砍掉的树项目放在玩家的目录中。

我想用一些伪代码来解释它会更容易:

public enum MaterialType
{
    Wood,
    Stone,
    Count // this should always be the last one
}

public class Block
{
    MaterialType m_type;
}

public class Player
{
    MaterialType m_inventory[MaterialType.Count];
}

// call this when you break a block
public class World
{
    public void OnBlockDestroyed()
    {
        player.m_inventory[block.m_type]++;
    }
}

我没有用文字来解释它,而是认为使用一些伪代码会更容易:

public enum MaterialType
{
    Wood,
    Stone,
    Count // this should always be the last one
}

public class Block
{
    MaterialType m_type;
}

public class Player
{
    MaterialType m_inventory[MaterialType.Count];
}

// call this when you break a block
public class World
{
    public void OnBlockDestroyed()
    {
        player.m_inventory[block.m_type]++;
    }
}

所以,你可以用一个断块放下一件物品,你想知道如何将该物品放入库存,或者其他什么东西?非常好。我想知道如何删除这个项目。我想我可以做一些类似(newdroppeditem(ItemToBeRemoved.Texture))的事情,但我想知道如何告诉被丢弃的物品,当玩家捡起它时,应该给它什么物品。我想我读到了一些关于反思做我想做的事情的文章,但是我的记忆力比金鱼差。所以,你可以用一个断块扔一件物品,你想知道如何将该物品放入库存,或者其他什么?非常好。我想知道如何删除这个项目。我想我可以做一些类似(newdroppeditem(ItemToBeRemoved.Texture))的事情,但我想知道如何告诉被丢弃的物品,当玩家捡起它时,应该给它什么物品。我想我读到了一些关于反射做我想做的事情,但我的记忆力比金鱼差。所以基本上我只是做了这样的事情:如果(item.name==“剁碎的木头”){inventory.add block(wood)}等等?基本上,但你可能想要一种比硬编码更好的方式来做事情。@AshleyDavies:你为什么要看文本?你已经有了一个块ID你用来画它,使用它!所以基本上我只是做这样的事情:如果(item.name==“剁碎的木头”){inventory.add block(wood)}等等?基本上,但是你可能想要一种比硬编码更好的方式来做事情。@AshleyDavies:你为什么要看文本?你已经有了一个块ID你用来画它,使用它!