我以前在实践中已经看到过类似的东西,但是我无法找出这种技术的名称以能够对其进行谷歌搜索。
我想实现这一目标:
public enum Directions
{
Top = 1,
Right = 2,
Bottom = 4,
Left = 8
}
然后生成这些方向的随机组合:
int combinationOfDirections = Random.Range(1, 15);
..因此最小值可以为1,最大值为15(1 + 2 + 4 + 8)。
我可以使用哪种方法来测试选择了顶部,右侧,底部和左侧的哪种组合。像这样:
// 'includes' is just the English version of what I want to do
if(combinationOfDirections includes Directions.Bottom)
我确定是使用'|'的东西或“&” ..任何帮助都会很热!
谢谢
答案 0 :(得分:1)
您可以执行以下操作来检查是否包含方向:
public static bool isDirectionAvailable(Directions direction, int value)
{
return ((int)direction & value) != 0;
}
答案 1 :(得分:1)
如果您有这样的变量:
var dirs = (Directions)combinationsOfDirections;
您可以使用HasFlag()
方法检查是否包含单个方向:
bool hasTop = dirs.HasFlag(Directions.Top);
要检查值是否精确是指定的组合,您可以执行以下操作:
bool isExactlyTopAndBottom = dirs == Directions.Top | Directions.Bottom;