void setPropertyState(ESkillType skillType, object[] data) // for destination position
    {
        if (data == null)
        {
            return;
        }

        if (data.Length <= 0)
        {
            return;
        }

        if (skillType == ESkillType.TARGET)
        {
            foreach (System.Collections.Generic.KeyValuePair <ESkillAction, SkillState> iterator in listState)
            {
                switch (iterator.Key)
                {
                case ESkillAction.ONCE:
                    SkillStateOnce stateOnce = iterator.Value as SkillStateOnce;
                    if ((ESkillOffense)Ability == ESkillOffense.SINGLE)
                    {
                        stateOnce.enemy = (GameObject)data[0];
                    }
                    else
                    {
                        stateOnce.destPosition = (Vector3)data[0];
                    }
                    break;

                case ESkillAction.DROP:
                    SkillStateDrop stateDrop = iterator.Value as SkillStateDrop;
                    stateDrop.destPosition = (Vector3)data[0];
                    break;

                case ESkillAction.TRAP:
                    SkillStateTrap stateTrap = iterator.Value as SkillStateTrap;
                    stateTrap.position = (Vector3)data[0];
                    break;
                }
            }
        }
    }
    SkillState getClassSkill(ESkillAction type)
    {
        SkillState s = null;

        switch (type)
        {
        case ESkillAction.ONCE:
            s = new SkillStateOnce();
            break;

        case ESkillAction.DROP:
            s = new SkillStateDrop();
            break;

        case ESkillAction.EXPLOSION:
            s = new SkillStateExplosion();
            break;

        case ESkillAction.TRAP:
            s = new SkillStateTrap();
            break;

        case ESkillAction.FADE:
            s = new SkillStateFade();
            break;

        case ESkillAction.BUFF:
            s = new SkillStateBuff();
            break;

        case ESkillAction.ARMAGGEDDON:
            s = new SkillStateArmaggeddon();
            break;

        case ESkillAction.DESTROY:
            s = new SkillStateDestroy();
            break;
        }
        return(s);
    }
    SkillState getClassSkill(ESkillAction type)
    {
        SkillState s = null;

        switch (type)
        {
            case ESkillAction.ONCE:
                s = new SkillStateOnce();
                break;
            case ESkillAction.DROP:
                s = new SkillStateDrop();
                break;
            case ESkillAction.EXPLOSION:
                s = new SkillStateExplosion();
                break;
            case ESkillAction.TRAP:
                s = new SkillStateTrap();
                break;
            case ESkillAction.FADE:
                s = new SkillStateFade();
                break;
            case ESkillAction.BUFF:
                s = new SkillStateBuff();
                break;
            case ESkillAction.ARMAGGEDDON:
                s = new SkillStateArmaggeddon();
                break;
            case ESkillAction.DESTROY:
                s = new SkillStateDestroy();
                break;
        }
        return s;
    }