コード例 #1
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
    }