Ejemplo n.º 1
0
        public PartDataWhole TransformToPartsList(JoinType joinType, Transform trans, int selctIndex, byte[] pixels, byte[] drawPixel, byte[] drawTexture)
        {
            List <PartData> parts = new List <PartData>();

            ResDragItem [] transList = trans.GetComponentsInChildren <ResDragItem>();
            for (int i = 0; i < transList.Length; i++)
            {
                Transform img = transList[i].transform;
                if (img.GetComponent <Image>().sprite == null)
                {
                    continue;
                }
                PartType type  = transList[i].partType;
                byte[]   b     = img.GetComponent <Image>().sprite.texture.EncodeToPNG();
                float[]  pos   = { img.localPosition.x, img.localPosition.y, img.localPosition.z };
                float[]  scale = { img.localScale.x, img.localScale.y, img.localScale.z };
                PartData p     = new PartData(type, b, pos, scale);
                parts.Add(p);
            }
            PartDataWhole partDataWhole = new PartDataWhole(joinType, selctIndex, pixels, drawPixel, parts, drawTexture);

            GameManager.instance.SetCurPartDataWhole(partDataWhole);

            //序列化
            PersonManager.instance.SerializePerson(partDataWhole);
            return(partDataWhole);
        }
Ejemplo n.º 2
0
    private void AddEvent()
    {
        //返回按钮
        BtnHome.onClick.AddListener(delegate
        {
            AudioManager.instance.PlayAudio(EffectAudioType.Option, null);
            if (GameManager.instance.openType == OpenType.FirstEdit || GameManager.instance.openType == OpenType.BackEdit)
            {
                GameManager.instance.SetNextSceneName(SceneName.Home);
                TransitionView.instance.OpenTransition();
            }
            else
            {
                PersonManager.instance.CurPersonPageIndex = 0;//画册进入编辑进入保存,返回画册应该是第一页
                GameManager.instance.SetNextSceneName(SceneName.Calendar);
                TransitionView.instance.OpenTransition();
                //刷新修改的人物
                if (refreshCalendar != null)
                {
                    refreshCalendar(CalendarDetailController.instance.curDetailIndex);
                }
            }
        });

        //编辑按钮
        BtnBack.onClick.AddListener(delegate
        {
            AudioManager.instance.PlayAudio(EffectAudioType.Option, null);
            PartDataWhole whole = GameManager.instance.curWhole;
            if (GameManager.instance.openType != OpenType.ReEdit)
            {
                GameManager.instance.SetOpenType(OpenType.BackEdit);
            }
            GameManager.instance.SetNextSceneName(SceneName.Join);
            TransitionView.instance.OpenTransition();
        });

        /*目前没有此按钮
         * BtnSave.onClick.AddListener(delegate {
         #if !UNITY_EDITOR
         *  ShowMask(false);
         #endif
         *  AudioManager.instance.PlayAudio(EffectAudioType.Option, null);
         *  SavePic();
         * });
         */
        BtnGame.onClick.AddListener(delegate
        {
            AudioManager.instance.PlayAudio(EffectAudioType.Option, null);
            UIHelper.instance.LoadPrefab("Prefabs/game/window|window_choosegame", GameManager.instance.GetCanvas().transform, Vector3.zero, Vector3.one, true);
        });
    }
Ejemplo n.º 3
0
    //反序列化
    public PartDataWhole DeserializePerson(string fileName)
    {
        IFormatter formatter = new BinaryFormatter();
        string     path      = PersonDataPath + fileName + ".bin";

        Debug.Log("des:" + path);
        if (!File.Exists(path))
        {
            return(null);
        }
        Stream        stream = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read);
        PartDataWhole whole  = (PartDataWhole)formatter.Deserialize(stream);

        stream.Flush();
        stream.Close();
        return(whole);
    }
Ejemplo n.º 4
0
    //序列化
    public void SerializePerson(PartDataWhole whole)
    {
        IFormatter    formatter = new BinaryFormatter();
        DirectoryInfo info      = new DirectoryInfo(PersonDataPath);

        if (!info.Exists)
        {
            Debug.Log("文件夹不存在:" + PersonDataPath);
            Directory.CreateDirectory(PersonDataPath);
        }
        string savePath = SavePath + ".bin";
        Stream stream   = new FileStream(savePath, FileMode.Create, FileAccess.Write, FileShare.None);

        formatter.Serialize(stream, whole);
        stream.Flush();
        stream.Close();
    }
Ejemplo n.º 5
0
    private void AddBtnListener()
    {
        BtnBack.onClick.AddListener(delegate {
            AudioManager.instance.PlayAudio(EffectAudioType.Option, null);
            GameManager.instance.SetNextSceneName(SceneName.Index);
            TransitionView.instance.OpenTransition();
        });

        BtnDelete.onClick.AddListener(delegate
        {
            AudioManager.instance.PlayAudio(EffectAudioType.Option, null);
            ShowDeleteBtn(true);
            SwitchDelBtn(false);
        });

        BtnDefault.onClick.AddListener(delegate {
            AudioManager.instance.PlayAudio(EffectAudioType.Option, null);
            ShowDeleteBtn(false);
            SwitchDelBtn(true);
        });

        BtnPre.onClick.AddListener(delegate {
            AudioManager.instance.PlayAudio(EffectAudioType.Option, null);
            CalenderController.instance.CurPageIndex = Mathf.Max(0, CalenderController.instance.CurPageIndex - 1);
            PageScrollEndFunc(CalenderController.instance.CurPageIndex);
        });

        BtnNext.onClick.AddListener(delegate {
            AudioManager.instance.PlayAudio(EffectAudioType.Option, null);
            CalenderController.instance.CurPageIndex = Mathf.Min(CalenderController.instance.CurPageIndex + 1, CalenderController.instance.PageNum - 1);
            Debug.Log("BtnNext:" + CalenderController.instance.CurPageIndex);
            PageScrollEndFunc(CalenderController.instance.CurPageIndex);
        });

        BtnDetailBack.onClick.AddListener(delegate
        {
            AudioManager.instance.PlayAudio(EffectAudioType.Option, null);
            HideDetail();
        });

        BtnDetailEdit.onClick.AddListener(delegate
        {
            GameManager.instance.SetOpenType(OpenType.ReEdit);
            GameManager.instance.SetJoinShowAll(true);
            AudioManager.instance.PlayAudio(EffectAudioType.Option, null);
            string fileName     = PersonManager.instance.pathList[CalenderController.instance.SelectItemId];
            PartDataWhole whole = PersonManager.instance.DeserializePerson(fileName);
            GameManager.instance.homeSelectIndex = whole.ModelIndex;
            GameManager.instance.SetOpenType(OpenType.ReEdit);
            GameManager.instance.SetCurPartDataWhole(whole);
            GameManager.instance.curJoinType      = whole.JoinType;
            PersonManager.instance.PersonFileName = fileName;
            GameManager.instance.SetNextSceneName(SceneName.Join);
            GameManager.instance.CalendarDetailShow = false;
            TransitionView.instance.OpenTransition();
        });

        BtnDetailGame.onClick.AddListener(delegate
        {
            GameManager.instance.openType    = OpenType.ReEdit;
            GameManager.instance.displayType = DisplayType.NoDisplay;//从画册进入,没有展示页
            string fileName     = PersonManager.instance.pathList[CalenderController.instance.SelectItemId];
            PartDataWhole whole = PersonManager.instance.DeserializePerson(fileName);
            GameManager.instance.SetCurPartDataWhole(whole);
            GameManager.instance.curJoinType     = whole.JoinType;
            GameManager.instance.homeSelectIndex = whole.ModelIndex;
            //PersonManager.instance.PersonFileName = fileName;
            AudioManager.instance.PlayAudio(EffectAudioType.Option, null);
            UIHelper.instance.LoadPrefab("Prefabs/game/window|window_choosegame", GameManager.instance.GetCanvas().transform, Vector3.zero, Vector3.one, true);
        });

        BtnDetailDownload.onClick.AddListener(delegate
        {
            AudioManager.instance.PlayAudio(EffectAudioType.Option, null);
            string path = PersonManager.instance.PersonImgPath + "/" + PersonManager.instance.pathList[CalenderController.instance.SelectItemId] + ".png";
            UnityToIOS_SavePhotoToAlbum(path);
        });
    }
Ejemplo n.º 6
0
    public void LoadFileAnimal(PartDataWhole _whole)
    {
        if (_whole == null)
        {
            Debug.LogError("file is null:" + _whole.JoinType);
        }
        List <PartData> part = _whole.PartDataList;

        for (int i = 0; i < part.Count; i++)
        {
            PartType partType = part[i].PType;
            if (partType != PartType.Body && partType != PartType.Pixels && partType != PartType.drawPixels)
            {
                Vector3 pos   = new Vector3(part[i].Pos[0], part[i].Pos[1], part[i].Pos[2]);
                Vector3 scale = new Vector3(part[i].Scale[0], part[i].Scale[1], part[i].Scale[2]);
                Debug.Log(pos);
                GameObject obj  = null;
                string     path = "Prefabs/join|gen_res";
                if (partType == PartType.LeftHand || partType == PartType.RightHand || partType == PartType.LeftLeg || partType == PartType.RightLeg)//手脚
                {
                    obj = UIHelper.instance.LoadPrefab(path, joinMainView.HandLegCG.transform, pos, scale);
                }
                else if (partType == PartType.TrueBody)
                {
                    obj = UIHelper.instance.LoadPrefab(path, joinMainView.TrueBodyCG.transform, pos, scale);
                }
                else if (partType == PartType.Head)
                {
                    joinMainView.targetHeadPos = pos;
                    obj = UIHelper.instance.LoadPrefab(path, joinMainView.HeadCG.transform, Vector3.zero, Vector3.one, false);
                    joinMainView.EyeMouthHairCG.transform.SetParent(obj.transform);
                    obj.transform.localScale    = scale;
                    obj.transform.localPosition = pos;
                }
                else if (partType == PartType.LeftEye || partType == PartType.RightEye || partType == PartType.Mouth || partType == PartType.Hair)
                {
                    obj = UIHelper.instance.LoadPrefab(path, joinMainView.EyeMouthHairCG.transform, pos, scale);
                }
                else if (partType == PartType.Hat || partType == PartType.HeadWear)
                {
                    obj = UIHelper.instance.LoadPrefab(path, joinMainView.HatHeadwearCG.transform, pos, scale);
                }
                Image     img = obj.transform.GetComponent <Image>();
                Texture2D t   = new Texture2D(500, 500, TextureFormat.RGBA32, false);
                t.filterMode = FilterMode.Point;
                t.LoadImage(part[i].ImgBytes);
                t.Apply(false);
                Sprite s = Sprite.Create(t, new Rect(0, 0, t.width, t.height), new Vector2(0.5f, 0.5f));
                img.sprite = s;
                img.SetNativeSize();
                obj.transform.localScale = scale;

                ResDragItem item = obj.GetComponent <ResDragItem>();
                if (item == null)
                {
                    item = obj.AddComponent <ResDragItem>();
                }
                item.partType = partType;
                item.LoadInitItem(partType, s);
            }
        }
    }
Ejemplo n.º 7
0
    public void LoadFile(PartDataWhole _whole)
    {
        Texture2D       drawTexture = null;
        List <PartData> part        = _whole.PartDataList;

        for (int i = 0; i < part.Count; i++)
        {
            PartType partType = part[i].PType;
            if (partType != PartType.Body && partType != PartType.Pixels && partType != PartType.drawPixels)
            {
                Vector3    pos   = new Vector3(part[i].Pos[0], part[i].Pos[1], part[i].Pos[2]);
                Vector3    scale = new Vector3(part[i].Scale[0], part[i].Scale[1], part[i].Scale[2]);
                GameObject obj   = null;
                string     path  = "Prefabs/join|gen_res";
                if (partType == PartType.LeftHand || partType == PartType.RightHand || partType == PartType.LeftLeg || partType == PartType.RightLeg)//手脚
                {
                    obj = UIHelper.instance.LoadPrefab(path, joinMainView.HandLegCG.transform, pos, scale);
                }
                else if (partType == PartType.LeftEye || partType == PartType.RightEye || partType == PartType.Mouth || partType == PartType.Hair)
                {
                    obj = UIHelper.instance.LoadPrefab(path, joinMainView.EyeMouthHairCG.transform, pos, scale);
                }
                else if (partType == PartType.Hat || partType == PartType.HeadWear)
                {
                    obj = UIHelper.instance.LoadPrefab(path, joinMainView.HatHeadwearCG.transform, pos, scale);
                }

                Image     img = obj.transform.GetComponent <Image>();
                Texture2D t   = new Texture2D(500, 500, TextureFormat.RGBA32, false);
                t.filterMode = FilterMode.Point;
                t.LoadImage(part[i].ImgBytes);
                t.Apply(false);
                Sprite s = Sprite.Create(t, new Rect(0, 0, t.width, t.height), new Vector2(0.5f, 0.5f));
                img.sprite = s;
                img.SetNativeSize();
                obj.transform.localScale = scale;

                ResDragItem item = obj.GetComponent <ResDragItem>();
                if (item == null)
                {
                    item = obj.AddComponent <ResDragItem>();
                }
                item.partType = partType;
                item.LoadInitItem(partType, s);
            }
            else
            {
                //不管
                if (partType == PartType.Body)
                {
                    Texture2D t = new Texture2D(500, 500, TextureFormat.RGBA32, false);
                    t.filterMode = FilterMode.Point;
                    t.LoadImage(part[i].ImgBytes);
                    t.Apply(false);
                    drawTexture = t;
                }
            }
        }
        if (joinMainView.mobilePaint != null)
        {
            Texture2D t = new Texture2D(500, 500, TextureFormat.RGBA32, false);
            t.filterMode = FilterMode.Point;
            t.LoadImage(_whole.DrawTexture);
            t.Apply(false);
            joinMainView.mobilePaint.SetPixelsTest(t, drawTexture);
        }
    }
Ejemplo n.º 8
0
 public void SetCurPartDataWhole(PartDataWhole whole)
 {
     curWhole = whole;
 }
Ejemplo n.º 9
0
        /// <summary>
        /// 同步获取一个人物并计算出最低点
        /// </summary>
        /// <returns>The person object.</returns>
        /// <param name="part">Part.</param>
        public GameObject GetPersonObjWithFlag(PartDataWhole whole, out float minPosY)
        {
            float           minY         = float.MaxValue;
            List <PartData> part         = whole.PartDataList;
            GameObject      person       = new GameObject("person");
            Transform       transBody    = person.transform;
            Transform       parentBody   = null;
            GameObject      parentObj    = null;
            GameObject      bodyRectTemp = null;

            if (whole.JoinType == JoinType.Animal)
            {
                string bodypath = "Prefabs/display|display_item_animalbody";
                parentObj  = UIHelper.instance.LoadPrefab(bodypath, person.transform, Vector3.zero, Vector3.one);
                parentBody = parentObj.transform.Find("img_item").transform;
                DisplayPartItem item = parentObj.gameObject.AddComponent <DisplayPartItem>();
                item.partType = PartType.AnimalBody;
            }
            for (int i = 0; i < part.Count; i++)
            {
                PartType partType = part[i].PType;
                if (partType == PartType.Pixels || partType == PartType.drawPixels)
                {
                    continue;
                }
                Vector3    pos   = new Vector3(part[i].Pos[0], part[i].Pos[1], part[i].Pos[2]);
                Vector3    scale = new Vector3(part[i].Scale[0], part[i].Scale[1], part[i].Scale[2]);
                GameObject obj;
                Debug.Log(partType + "   " + pos);
                string path = "Prefabs/display|display_item_" + partType.ToString().ToLower();
                if (partType == PartType.LeftEye || partType == PartType.RightEye || partType == PartType.Mouth)
                {
                    if (whole.JoinType == JoinType.Animal)
                    {
                        obj = UIHelper.instance.LoadPrefab(path, transBody, pos, scale);
                    }
                    else
                    {
                        obj = UIHelper.instance.LoadPrefab(path, person.transform, pos, scale);
                        obj.transform.SetParent(transBody);
                    }
                }
                else if (partType == PartType.Head || partType == PartType.TrueBody)
                {
                    obj = UIHelper.instance.LoadPrefab(path, parentBody, pos, scale);
                    if (bodyRectTemp == null)
                    {
                        bodyRectTemp = obj;
                    }
                }
                else
                {
                    obj = UIHelper.instance.LoadPrefab(path, person.transform, pos, scale);
                    obj.transform.SetParent(transBody);
                }
                //给后面的节点指定父节点
                if (partType == PartType.Head || partType == PartType.Body)
                {
                    transBody = obj.transform.Find("img_item").transform;
                }

                //使用RawImage
                RawImage  img = obj.transform.Find("img_item").GetComponent <RawImage>();
                Texture2D t   = new Texture2D(500, 500, TextureFormat.RGBA32, false);
                t.filterMode = FilterMode.Point;
                t.LoadImage(part[i].ImgBytes);
                t.Apply(false);
                img.texture = t;
                img.SetNativeSize();
                //调整父节点的大小
                float w = img.GetComponent <RectTransform>().sizeDelta.x;
                float h = img.GetComponent <RectTransform>().sizeDelta.y;
                obj.transform.GetComponent <RectTransform>().sizeDelta = new Vector2(w, h);

                DisplayPartItem item = obj.AddComponent <DisplayPartItem>();
                item.partType = part[i].PType;
                item.Init();

                //最低点计算
                float bottom = obj.GetComponent <RectTransform>().anchoredPosition.y - h / 2;

                if (partType == PartType.Body)
                {
                    float j = Utils.GetPicHeightRate(t);
                    bottom = h / 2 - h * (1 - j);
                }
                if (minY > bottom)
                {
                    minY = bottom;
                }
            }
            if (whole.JoinType == JoinType.Animal && parentObj != null)
            {
                float offsetHeight = bodyRectTemp.transform.localPosition.y;
                parentObj.transform.SetAsLastSibling();
                parentBody.GetComponent <RectTransform>().sizeDelta = new Vector2(bodyRectTemp.GetComponent <RectTransform>().sizeDelta.x, bodyRectTemp.GetComponent <RectTransform>().sizeDelta.y - offsetHeight);//bodyRectTemp.GetComponent<RectTransform>().sizeDelta;
                parentObj.GetComponent <RectTransform>().sizeDelta  = new Vector2(bodyRectTemp.GetComponent <RectTransform>().sizeDelta.x, bodyRectTemp.GetComponent <RectTransform>().sizeDelta.y - offsetHeight);
                parentBody.GetComponent <RectTransform>().anchorMin = new Vector2(0.5f, 0);
                parentBody.GetComponent <RectTransform>().anchorMax = new Vector2(0.5f, 0);
                parentBody.GetComponent <RectTransform>().pivot     = new Vector2(0.5f, 0);
            }
            GameObject flagObj = new GameObject("flag_bottom");

            flagObj.transform.SetParent(person.transform);
            flagObj.transform.localPosition = new Vector3(0, minY, 0);

            curPerson = person;
            GetListDiaplayItem(person.transform);
            minPosY = minY;
            return(person);
        }
Ejemplo n.º 10
0
    void AddBtnEvent()
    {
        BtnBack.onClick.AddListener(delegate {
            AudioManager.instance.PlayAudio(EffectAudioType.Option, null);
            GameManager.instance.SetNextSceneName(SceneName.Calendar);
            TransitionView.instance.OpenTransition();
        });

        BtnPre.onClick.AddListener(delegate {
            AudioManager.instance.PlayAudio(EffectAudioType.Option, null);
            int curIndex = CalendarDetailController.instance.PreDetail();
            PersonManager.instance.CurPersonIndex = curIndex;
            calendarListDrag.AniResetPosition(curIndex);
            calendarListDrag.AniResetScaleAndAlpha(curIndex);
            SetBtnActive(curIndex, CalenderController.instance.PersonNum);
        });

        BtnNext.onClick.AddListener(delegate {
            AudioManager.instance.PlayAudio(EffectAudioType.Option, null);
            int curIndex = CalendarDetailController.instance.NextDetail();
            PersonManager.instance.CurPersonIndex = curIndex;
            calendarListDrag.AniResetPosition(curIndex);
            calendarListDrag.AniResetScaleAndAlpha(curIndex);
            SetBtnActive(curIndex, CalenderController.instance.PersonNum);
        });

        BtnDownload.onClick.AddListener(delegate {
            AudioManager.instance.PlayAudio(EffectAudioType.Option, null);
#if !UNITY_EDITOR
            ShowMask(true);
#endif
            string path = PersonManager.instance.PersonImgPath + "/" + PersonManager.instance.pathList[CalendarDetailController.instance.curDetailIndex] + ".png";
            CallManager.instance.UnityToPlatform_SavePhotoToAlbum(path);
        });

        BtnEdit.onClick.AddListener(delegate {
            GameManager.instance.SetOpenType(OpenType.ReEdit);
            GameManager.instance.SetJoinShowAll(true);
            AudioManager.instance.PlayAudio(EffectAudioType.Option, null);
            string fileName     = PersonManager.instance.pathList[CalendarDetailController.instance.curDetailIndex];
            PartDataWhole whole = PersonManager.instance.DeserializePerson(fileName);
            GameManager.instance.homeSelectIndex = whole.ModelIndex;
            GameManager.instance.SetOpenType(OpenType.ReEdit);
            GameManager.instance.SetCurPartDataWhole(whole);
            GameManager.instance.curJoinType      = whole.JoinType;
            PersonManager.instance.PersonFileName = fileName;
            Debug.Log("1:" + fileName);
            GameManager.instance.SetNextSceneName(SceneName.Join);
            TransitionView.instance.OpenTransition();
        });

        BtnGame.onClick.AddListener(delegate {
            GameManager.instance.openType = OpenType.ReEdit;
            string fileName     = PersonManager.instance.pathList[CalendarDetailController.instance.curDetailIndex];
            PartDataWhole whole = PersonManager.instance.DeserializePerson(fileName);
            GameManager.instance.SetCurPartDataWhole(whole);
            GameManager.instance.curJoinType = whole.JoinType;
            Debug.Log("curJoinType:" + GameManager.instance.curJoinType);
            GameManager.instance.homeSelectIndex = whole.ModelIndex;
            AudioManager.instance.PlayAudio(EffectAudioType.Option, null);
            UIHelper.instance.LoadPrefab("Prefabs/game/window|window_choosegame", GameManager.instance.GetCanvas().transform, Vector3.zero, Vector3.one, true);
        });
    }