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你用来画它,使用它!