Beispiel #1
0
    // Use this for initialization
    void Start()
    {
        //加载要显示的对象的预设体
        GameObject prefab = LoadUtils.LoadPrefabFromResources(ConfigureClass.itemsPrefabPath["result"] + ConfigureClass.showModelInRepository);

        //显示该对象
        Instantiate(prefab);
    }
Beispiel #2
0
    protected virtual void OnTrackingFound()
    {
//        //如果是第一次发现该对象并且该对象已经激活,则进行一些操作,让屏幕中心的对象消失
//        if (b_firstFound&&gameObject.activeSelf)
//        {
//            //取消当前场景中共享数据类的中所有对象的激活
//            CancelActivationAllGameObjects(currentSenceDataShare.CurrentItemgGameObjects);
//            //将第一次发现该对象设置为false
//            b_firstFound = false;
//        }


        var rendererComponents = GetComponentsInChildren <Renderer>(true);
        var colliderComponents = GetComponentsInChildren <Collider>(true);
        var canvasComponents   = GetComponentsInChildren <Canvas>(true);

        // Enable rendering:
        foreach (var component in rendererComponents)
        {
            component.enabled = true;
        }

        // Enable colliders:
        foreach (var component in colliderComponents)
        {
            component.enabled = true;
        }

        // Enable canvas':
        foreach (var component in canvasComponents)
        {
            component.enabled = true;
        }


        //        if (null != currentSenceDataShare)//保证共享数据类被初始化
        //        {
        //            //取得当前对象名称放入共享数据类中的相应位置
        //            currentSenceDataShare.ActiveModel = gameObject.name;
        //        }

        #region 进行拼图处理

        //获得当前激活(选定)的游戏对象名称
        string name = currentSenceDataShare.GetNameOfActiveItemGameObject();
        if (null == name)//如果当前不存在选中对象
        {
            //则拼图失败
            return;
        }

        Debug.Log("要拼接的物品名称" + name);
        //获得当前激活(选定)的游戏对象对应的拼图编号
        int codeOfPuzzle = ConfigureClass.puzzleStep[name];
        //对比编号

        if (_currentCodeOfPuzzle == codeOfPuzzle)//编号满足,则拼接成功,拼图成功
        {
            //加载新的拼图结果
            GameObject tempGameObject =
                LoadUtils.LoadPrefabFromResources(ConfigureClass.stepPath[currentSceneName] + _currentCodeOfPuzzle);
            Debug.Log("要实例化的对象" + ConfigureClass.stepPath[currentSceneName] + _currentCodeOfPuzzle);
            //实例化拼图结果
            tempGameObject = Instantiate(tempGameObject);

            //持有新拼图结果的引用,并且删除以前的拼图结果
            if (null != puzzleResult)
            {
                //删除以前的拼图结果
                Destroy(puzzleResult);
            }
            //持有新拼图结果的引用
            puzzleResult = tempGameObject;
            //引用传给公共变量
            currentSenceDataShare.currentPuzzleResult = puzzleResult;

            Debug.Log("拼图" + _currentCodeOfPuzzle + "成功");

            //拼图编号增加1
            _currentCodeOfPuzzle++;

            //取消当前选中对象
            destoryItem.RemoveItemChoicedFromItemBar();
            //激活该对象对应的ImageTarget
            destoryItem.ActiveChoicedImageTarget();

            #region 拼图完成处理

            if ((_currentCodeOfPuzzle - 1) == _endCodeOfPuzzle)
            {
                //开启游戏结束界面
                GameOverInterface.SetActive(true);
                //显示游戏结果
                GameOverScript.ShowGameResult();
                Debug.Log("拼图完成");
            }

            #endregion
        }
        else//编号不一致,拼图失败
        {
            //TODO:拼图失败操作
            Debug.Log("拼图" + _currentCodeOfPuzzle + "失败");
        }


        #endregion
    }
Beispiel #3
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;
    }
Beispiel #4
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
    }