定义
using System; using System.Collections.Generic; /** * ============================================================================== * @Author 曾峰(zengfeng75@qq.com) * @Web http://blog.ihaiu.com * @CreateTime 9/6/2017 4:47:53 PM * @Description: 关系类型 * ============================================================================== */ namespace Games.Wars { /** 关系类型 */ [System.Flags] public enum RelationType { /** 未知 */ None = 0, /** 仅自己 */ Own = 1, /** 仅队友 */ Friendly = 2, /** 仅敌人 */ Enemy = 4, // 队友和自己 // Own | Friendly OwnAndFriendly = 3, // 队友和自己 // Own | Friendly | Enemy All = 7, } }
using System; using System.Collections.Generic; /** * ============================================================================== * @Author 曾峰(zengfeng75@qq.com) * @Web http://blog.ihaiu.com * @CreateTime 9/6/2017 5:19:33 PM * @Description: * ============================================================================== */ namespace Games.Wars { public static class RelationTypeUtils { public static bool ROwn(this RelationType relation) { return (int)(RelationType.Own & relation) != 0; } public static bool RFriendly(this RelationType relation) { return (int)(RelationType.Friendly & relation) != 0; } public static bool REnemy(this RelationType relation) { return (int)(RelationType.Enemy & relation) != 0; } public static bool RContain(this RelationType relation, RelationType item) { return (int)(item & relation) != 0; } } }
测试
using UnityEngine; using System.Collections; using Games.Wars; /** ============================================================================== * @Author 曾峰(zengfeng75@qq.com) * @Web http://blog.ihaiu.com * @CreateTime #CREATIONDATE# * @Description: * ============================================================================== */ public class TestRelationType : MonoBehaviour { // Use this for initialization void Start () { Test(); } [ContextMenu("Test")] public void Test() { RelationType own = RelationType.Own; RelationType friendly = RelationType.Friendly; RelationType enemy = RelationType.Enemy; RelationType ownAndFriendly = own | friendly; RelationType all = own | friendly | enemy; Loger.LogFormat("{0}, {1}", own, (int)own); Loger.LogFormat("{0}, {1}", friendly, (int)friendly); Loger.LogFormat("{0}, {1}", enemy, (int)enemy); Loger.LogFormat("{0}, {1}", ownAndFriendly, (int)ownAndFriendly); Loger.LogFormat("{0}, {1}", all, (int)all); Loger.LogFormat("{0} == {1}, {2}, Bit {3}", all, RelationType.Enemy, all == RelationType.Enemy, all.REnemy()); Loger.LogFormat("{0} == {1}, {2}, Bit {3}", ownAndFriendly, RelationType.Enemy, ownAndFriendly == RelationType.Enemy, ownAndFriendly.REnemy()); Loger.LogFormat("{0} == {1}, {2}", enemy, RelationType.Enemy, enemy == RelationType.Enemy); } }