示例#1
0
 public void Load()
 {
     if (string.IsNullOrEmpty(npcPrefabName))
     {
         npcObjPrefab = null;
     }
     if (npcObjPrefab == null)
     {
         if (!string.IsNullOrEmpty(npcPrefabName))
         {
             npcObjPrefab = Resources.Load <GameObject>(npcPrefabDirectoryPath + "/" + npcPrefabName);
         }
     }
     if (NPCObj == null && npcObjPrefab != null)
     {
         NPCObj = GameObject.Instantiate <GameObject>(npcObjPrefab);
         NPCObj.transform.position    = NPCLocation;
         NPCObj.transform.eulerAngles = NPCAngle;
         NPCObj.name = NPCName;
         NPCDataInfoMono npcDaatInfoMono = NPCObj.AddComponent <NPCDataInfoMono>();
         npcDaatInfoMono.NPCDataInfo = this;
     }
     if (NPCSprite == null)
     {
         if (!string.IsNullOrEmpty(npcSpriteID))
         {
             NPCSprite = SpriteManager.GetSrpite(npcSpriteID);
         }
     }
 }
    private void OnTriggerEnter(Collider other)
    {
        int layer = (int)Mathf.Pow(2, other.gameObject.layer);

        if (layerMaks.value == (layerMaks.value | layer))
        {
            IDataInfoType iDataInfoType = other.gameObject.GetComponent <IDataInfoType>();
            if (iDataInfoType != null)
            {
                if (!GameObject.Equals(nowObj, other.gameObject))
                {
                    GameObject lastObj = nowObj;
                    nowObj = other.gameObject;
                    IPlayerState iPlayerState = GameState.Instance.GetEntity <IPlayerState>();
                    if (Type.Equals(iDataInfoType.T, typeof(StuffDataInfoMono)))
                    {
                        StuffDataInfoMono stuffDataInfoMono = iDataInfoType as StuffDataInfoMono;
                        if (stuffDataInfoMono.StuffDataInfo.ResidualCount() <= 0)
                        {
                            //尝试刷新
                            stuffDataInfoMono.StuffDataInfo.Update();
                        }
                        //如果大于零则表示可以
                        if (stuffDataInfoMono.StuffDataInfo.ResidualCount() > 0)
                        {
                            iPlayerState.TouchTargetStruct = new TouchTargetStruct()
                            {
                                ID              = stuffDataInfoMono.StuffDataInfo.StuffID,
                                TerrainName     = stuffDataInfoMono.StuffDataInfo.SceneName,
                                TouchTargetType = TouchTargetStruct.EnumTouchTargetType.Stuff
                            };
                        }
                        else
                        {
                            nowObj = lastObj;
                        }
                    }
                    else if (Type.Equals(iDataInfoType.T, typeof(NPCDataInfoMono)))
                    {
                        NPCDataInfoMono npcDataInfoMono = iDataInfoType as NPCDataInfoMono;
                        iPlayerState.TouchTargetStruct = new TouchTargetStruct()
                        {
                            ID              = npcDataInfoMono.NPCDataInfo.NPCID,
                            TerrainName     = npcDataInfoMono.NPCDataInfo.SceneName,
                            TouchTargetType = TouchTargetStruct.EnumTouchTargetType.NPC
                        };
                    }
                    else if (Type.Equals(iDataInfoType.T, typeof(ActionInteractiveDataInfoMono)))
                    {
                        ActionInteractiveDataInfoMono actionInteractiveDataInfoMono = iDataInfoType as ActionInteractiveDataInfoMono;
                        iPlayerState.TouchTargetStruct = new TouchTargetStruct()
                        {
                            ID              = actionInteractiveDataInfoMono.ActionInteractiveDataInfo.ActionInteractiveID,
                            TerrainName     = actionInteractiveDataInfoMono.ActionInteractiveDataInfo.SceneName,
                            TouchTargetType = TouchTargetStruct.EnumTouchTargetType.Action
                        };
                    }
                }
            }
        }
    }