private int activeIndex = -1;//当前激活对象的索引

    #endregion

    #region 公共方法

    /// <summary>
    /// 重物品栏中删除选中的物品
    /// </summary>
    public void RemoveItemChoicedFromItemBar()
    {
        //获得选中物品的索引
        activeIndex = currentSenceDataShare.GetIndexOfActiveItemGameObject();

        //如果当前选中对象索引是-1,不做操作
        if (-1 == activeIndex)
        {
            Debug.Log("当前选中对象索引是-1");
            return;
        }

        #region 将图片数组中的图片换成item_box

        //销毁原来的精灵图片
        //DestroyImmediate(images[activeIndex].sprite);
        //将该图片换成item_box
        images[activeIndex].sprite = LoadUtils.LoadSpriteFromResources(ConfigureClass.item_boxPicturePath);//从Resources文件夹下加载

        //删除选中物品的游戏对象
        currentSenceDataShare.DestoryActivedItemGameObjects();
        #endregion
    }
Example #2
0
    public CurrentSenceDataShare CurrentSenceDataShare; //获得数据共享数据类的引用

    // Use this for initialization
    void Start()
    {
        //游戏时间初始化为0
        ConfigureClass.finishTime = 0;
        //上次游戏时间初始化为0
        ConfigureClass.lastFinishTime = 0;

        //判断是否要读取存档,如果是,则进行读取
        if (ConfigureClass.isreadGameData)
        {
            #region 恢复游戏存档场景

            //读取游戏存档数据
            GameData gameData = SaveGameDataScript.GetGameData();

            //恢复游戏时间
            ConfigureClass.lastFinishTime = gameData.gameTime;

            //恢复拼图步骤编号
            TerrainTrackableEventHandler._currentCodeOfPuzzle = gameData.currentPuzzleCode;

            //恢复物品栏中存的物品名称
            CurrentSenceDataShare.Items = gameData.items;

            //恢复场景中的其他对象
            for (int i = 0; i < gameData.items.Length; i++)
            {
                //将items中的空串设置为null
                if (gameData.items[i].Equals(""))
                {
                    gameData.items[i] = null;
                }

                if (null != gameData.items[i]) //如果物品栏中的物品名称不为null,则进行处理
                {
                    //恢复物品栏中图片
                    Images[i].sprite = LoadUtils.LoadSpriteFromResources(
                        ConfigureClass.itemsPicturePath[gameData.sceneName] +
                        gameData.items[i]);

                    #region 恢复物品栏中对象的引用

                    Debug.Log("要实例化:" + ConfigureClass.itemsPrefabPath[gameData.sceneName] +
                              gameData.items[i]);

                    //加载游戏对象
                    GameObject itemGaneGameObject =
                        LoadUtils.LoadPrefabFromResources(ConfigureClass.itemsPrefabPath[gameData.sceneName] +
                                                          gameData.items[i]);
                    //实例化
                    itemGaneGameObject = Instantiate(itemGaneGameObject);
                    //传入引用
                    CurrentSenceDataShare.AddItemGameObjects(itemGaneGameObject, i);

                    #endregion

                    //取消激活ImageTarget
                    GameObject currentModel = GameObject.Find(gameData.items[i]);
                    currentModel.SetActive(false);

                    //添加取消激活的ImageTarget到取消激活的集合中
                    CurrentSenceDataShare.TargetsSetDisactive.Add(gameData.items[i], currentModel);//参数一是要取消激活模型的名称,参数二是具体引用
                }
            }

            //取消激活任务栏中的所有对象
            CurrentSenceDataShare.DisActiveAllItemgGameObjects();

            #endregion
        }

        //继续上一次拼图设置为false
        ConfigureClass.isreadGameData = false;
    }
Example #3
0
    /// <summary>
    /// 将当前活跃的模型添加到物品栏数组items中
    /// </summary>
    public void AddModelToItems()
    {
        //如果当前活跃模型为空,则直接返回
        if (null == currentSenceDataShare.ActiveModel)
        {
            return;
        }

        int position = 0;//物品栏中的空缺位置

        //从物品栏中找出空缺位置,如果大于5,则无空缺位置
        for (int i = 0; i < items.Length; i++)
        {
            //如果物品栏中已经存在该活动模型,则作一下处理
            if (items[i] != null && items[i].Equals(currentSenceDataShare.ActiveModel))
            {
                //将物品栏中物品对象设置为激活状态
                currentSenceDataShare.CurrentItemgGameObjects[i].SetActive(true);
                return;
            }

            if (items[i] == null)
            {
                break;//找到空缺位置
            }
            //位置增加
            position++;
        }
        Debug.Log(position);
        //当position的值大于等于物品栏长度,不存在空缺位置
        if (position >= items.Length)
        {
            //TODO:当任务栏位置不够的时候

            return;
        }

        //当position的值大于0且小于物品栏长度时,将当前活跃的模型的名字赋值给position对应的物品栏
        items[position] = currentSenceDataShare.ActiveModel;//ActiveModel是当前活动模型名字的访问器
        Debug.Log("当前对象是:" + currentSenceDataShare.ActiveModel);
        Debug.Log("items[position]中是:" + items[position]);

        //卸载当前模型,将不再能够检测到改模型的状态
        GameObject currentModel = GameObject.Find(items[position]);

        currentModel.SetActive(false);

        //将当前模型的引用进行保存,方便之后恢复
        targetsSetDisactive.Add(items[position], currentModel);//参数一是要取消激活模型的名称,参数二是具体引用
        //加载对应的资源到内存中
        //对刚刚添加到物品栏的物品,加载他的图片到物品栏图片集合中中
        Sprite     itemSprite;     //将要加载到内存的精灵图片
        GameObject itemGameObject; //将要实例化的prefab

        #region 完成物品栏中图片的加载
        //加载itemName对应的图片资源
        itemSprite = LoadUtils.LoadSpriteFromResources(ConfigureClass.itemsPicturePath[currentScenceName] + items[position]);
        //将Sprite图片加载到物品栏上,itemImages是对物品栏上的图片框的引用
        itemImages[position].sprite = itemSprite;
        #endregion

        #region 完成物品栏中对象的加载
        //加载对应的prefab对象,实例化预设体
        itemGameObject = LoadUtils.LoadPrefabFromResources(ConfigureClass.itemsPrefabPath[currentScenceName] + items[position]);
        Debug.Log("加载对象" + items[position]);
        itemGameObject = Instantiate(itemGameObject) as GameObject;
        //添加到当前物品栏中对象集合中
        currentSenceDataShare.AddItemGameObjects(itemGameObject, position);
        #endregion
    }