コード例 #1
0
        public override void Awake()
        {
            //虽然添加了raycast对象,但是还没添加pos....
            //而且panel -> obj的管理模式非常值得借鉴
            rayCastTargetCom = AddComponent <RayCastTarget>();
            rayCastTargetCom.OnMoveInEvent  += () => { Select(true); };
            rayCastTargetCom.OnMoveOutEvent += () => { Select(false); };

            //添加边框对象
            BoxDrawing        = UIFactroy.CreateBoxDrawingRect(Position - new Vector2(1, 1), 2, 40);
            BoxDrawing.Parent = GameObject;
            Select(false);

            //添加Label对象
            List <Vector2> posList = new List <Vector2>();

            for (int i = 0; i < 40; i++)
            {
                posList.Add(new Vector2(i, 0));
            }
            GameObject labelObj = new GameObject("StateLabel", "UI", GameObject, new Vector2(0, 1), posList);

            labelCom = labelObj.AddComponent <Renderer>();
            labelCom.Init(RendererMode.UI, (int)Layer.Label);

            //添加血条对象
            progressBar = ProgressBar.Create(length: 40);
            progressBar.GameObject.Parent = GameObject;
            progressBar.LocalPosition     = new Vector2(0, 0);
        }
コード例 #2
0
 public static void Make(RayCastTarget target, int entityId, int key, string tip)
 {
     BaseCastData.Make(target, ECastDataType.Common);
     target.IdList.Add(entityId);
     target.IdList.Add(key);
     target.Data = tip;
 }
コード例 #3
0
 public static void Make(RayCastTarget target, ECastDataType type)
 {
     target.KeyList.Clear();
     target.IdList.Clear();
     target.KeyList.Add(UserInputKey.PickUpTip);
     target.IdList.Add((int)type);
 }
コード例 #4
0
            private void ProcessSimpleEquipment(SceneObjectEntity entity, RayCastTarget target)
            {
                var equip    = entity.simpleEquipment;
                var category = entity.simpleEquipment.Category;
                var entityId = entity.entityKey.Value.EntityId;

                SceneObjCastData.Make(target, entityId, equip.Id, equip.Count, category);
                switch ((ECategory)category)
                {
                case ECategory.Weapon:
                    var weaponCfg = SingletonManager.Get <WeaponResourceConfigManager>().GetConfigById(equip.Id);
                    if (null == weaponCfg)
                    {
                        break;
                    }

                    var weaponType = (EWeaponType_Config)weaponCfg.Type;
                    if (weaponType.CanAutoPick())
                    {
                        EnableAutoPickup(entityId, target.gameObject);
                    }

                    break;

                default:
                    break;
                }
            }
コード例 #5
0
 public static void Make(RayCastTarget target, int entityId)
 {
     if (null == target)
     {
         return;
     }
     BaseCastData.Make(target, ECastDataType.FreeObject);
     target.IdList.Add(entityId);
 }
コード例 #6
0
        protected override void SetRaycastTargetData(KeyData data, RayCastTarget target)
        {
            var pointerData = data as PointerData;

            if (null == pointerData)
            {
                return;
            }

            pointerData.Data   = target.Data;
            pointerData.IdList = target.IdList;
        }
コード例 #7
0
    private void InitRayCastTargets()
    {
        GameObject[] tempTargets = GameObject.FindGameObjectsWithTag("RayCastTarget");
        Targets = new RayCastTarget[tempTargets.Length];
        int index = 0;

        foreach (GameObject target in tempTargets)
        {
            RayCastTarget newTarget = target.AddComponent <RayCastTarget>();
            Targets[index] = newTarget;
            index++;
        }
    }
コード例 #8
0
        public static void Make(RayCastTarget target, int entityId)
        {
            if (null == target)
            {
                Logger.Error("target is null");
                return;
            }

            if (!target.IdList.Contains(entityId))
            {
                BaseCastData.Make(target, ECastDataType.Door);
                target.IdList.Add(entityId);
            }
        }
コード例 #9
0
        public static void Make(RayCastTarget target, int entityId, int itemId, int count, int category)
        {
            if (null == target)
            {
                Logger.Error("target is null !!");
                return;
            }
            BaseCastData.Make(target, ECastDataType.SceneObject);
            var idList = target.IdList;

            idList.Add(entityId);
            idList.Add(itemId);
            idList.Add(count);
            idList.Add(category);
        }
コード例 #10
0
            private void ProcessWeapon(SceneObjectEntity entity, RayCastTarget target)
            {
                var weapon   = entity.weaponObject;
                var entityId = entity.entityKey.Value.EntityId;

                SceneObjCastData.Make(target, entityId, weapon.ConfigId, 1, (int)ECategory.Weapon);
                var weaponType = (EWeaponType_Config)SingletonManager
                                 .Get <WeaponResourceConfigManager>().GetConfigById(weapon.ConfigId)
                                 .Type;

                if (weaponType.CanAutoPick())
                {
                    EnableAutoPickup(entityId, target.gameObject);
                }
            }
コード例 #11
0
        private void ProcessWeaonCastSetting(SceneObjectEntity entity, RayCastTarget target)
        {
            var weapon   = entity.weaponObject;
            var entityId = entity.entityKey.Value.EntityId;

            SceneObjCastData.Make(target, entityId, weapon.ConfigId, entity.hasSimpleItem ? entity.simpleItem.Count : 1, (int)ECategory.Weapon);

            /*var weaponType = (EWeaponType_Config) SingletonManager
             *                                    .Get<WeaponResourceConfigManager>().GetConfigById(weapon.ConfigId)
             *                                    .Type;
             * if (weaponType.CanAutoPick())
             * {
             *  EnableAutoPickup(entityId, target.gameObject);
             * }*/
        }
コード例 #12
0
        public static RayCastTarget Assemble(GameObject model, Vector3 position, string name, bool needRotation = false)
        {
            if (null == model)
            {
                Logger.ErrorFormat("model is null !");
                return(null);
            }
            model.transform.position = position + GetGroundAnchorOffset(model);
            var colTrans = model.transform.Find(SceneObjectConstant.NormalColliderName);

            if (null == colTrans)
            {
                Logger.ErrorFormat("no normal collider find in {0}", model.name);
                var colGo = new GameObject(SceneObjectConstant.NormalColliderName);
                colTrans                  = colGo.transform;
                colTrans.parent           = model.transform;
                colTrans.localPosition    = Vector3.zero;
                colTrans.localEulerAngles = Vector3.zero;
                colTrans.localScale       = Vector3.one;
                var col = colGo.AddComponent <BoxCollider>();
                col.isTrigger = true;
                col.size      = Vector3.one;
            }

            if (needRotation)
            {
                colTrans.Rotate(new Vector3(0, 0, 90));
            }
            var normalCollider = colTrans.GetComponent <BoxCollider>();

            if (null == normalCollider)
            {
                Logger.ErrorFormat("no box attached to collider go");
                return(null);
            }

            RayCastTarget target = RayCastTargetUtil.AddRayCastTarget(normalCollider.gameObject);

            normalCollider.gameObject.layer = UnityLayerManager.GetLayerIndex(EUnityLayerName.UserInputRaycast);
            normalCollider.enabled          = true;
            return(target);
        }
コード例 #13
0
        protected RayCastTarget AddRaycastTarget(GameObject gameObject)
        {
            var           colliders           = gameObject.GetComponentsInChildren <Collider>();
            var           colliderCount       = colliders.Length;
            bool          noInputCastCollider = true;
            RayCastTarget target = null;

            for (int i = 0; i < colliderCount; ++i)
            {
                var collider = colliders[i];
                if (collider.gameObject.layer == UnityLayerManager.GetLayerIndex(EUnityLayerName.UserInputRaycast))
                {
                    target = RayCastTargetUtil.AddRayCastTarget(collider.gameObject);
                    noInputCastCollider = false;
                }
            }

            if (noInputCastCollider)
            {
                _logger.ErrorFormat("Door {0} has no inputraycast collider.", gameObject.name);
            }
            return(target);
        }
コード例 #14
0
 public static void Make(RayCastTarget target, int entityId)
 {
     BaseCastData.Make(target, ECastDataType.Player);
     target.IdList.Add(entityId);
 }