void Update()
        {
            // 如果控制状态详细信息面板已经显示,在点击其他地方后让其消失
            if (Input.GetMouseButtonDown(0) && controlDetail.activeSelf)
            {
                controlDetail.SetActive(false);
            }

            // 当选择的物体为空,或者已经被删除后置为灰色
            if (_selectedArObject == null)
            {
                _controlStatusImage.color         = Color.gray;
                _controlStatusDetailTexts[0].text = "未选中";
                // status detail
                _controlStatusDetailTexts[1].text = "点击模型:选中当前模型\n双击模型:改变控制状态";
            }
            else if (GetSelectArModel(_selectedArObject).DoubleClickChangeStatus.GetStatus() == 1)
            {
                // TransfromAroundAndDistance 被激活
                _controlStatusImage.color = Color.red;
                // 1->0, 2->1, 3->2
                // model name
                _controlStatusDetailTexts[0].text = "已选中";
                // status detail
                _controlStatusDetailTexts[1].text = "上下滑动:控制模型远近\n左右滑动:模型围绕移动";
            }
            else if (GetSelectArModel(_selectedArObject).DoubleClickChangeStatus.GetStatus() == -1)
            {
                // RotateAndUpDown被激活
                _controlStatusImage.color = Color.green;
                // model name
                _controlStatusDetailTexts[0].text = "已选中";
                // status detail
                _controlStatusDetailTexts[1].text = "上下滑动:控制模型高低\n左右滑动:控制模型旋转";
            }

            // 返回主页面
            if (Input.GetKeyDown(KeyCode.Escape))
            {
                SceneManager.LoadScene("MainPage");
            }

            Ray ray = firstPersonCamera.ScreenPointToRay(Input.mousePosition);

            if (Physics.Raycast(ray, out var hitInfo))
            {
                // todo 选中时高亮

                if (Input.GetMouseButtonDown(0))
                {
                    ArModelInfo modelInfo = GetSelectArModel(hitInfo.collider.gameObject);

                    print(hitInfo.collider.gameObject.name);
                    if (modelInfo == null)
                    {
                        return;
                    }

                    if (_selectedArObject == null)
                    {
                        _selectedArObject = modelInfo.ArGameObject;
                        modelInfo.TransfromAroundAndDistance.enabled = true;
                        modelInfo.RotateAndUpDown.enabled            = false;
                        modelInfo.DoubleClickChangeStatus.enabled    = true;
                        Renderer _renderer1 = _selectedArObject.GetComponent <MeshRenderer>();
                        _renderer1.material.shader = Shader.Find("CM/RimLight");
                        _renderer1.material.SetColor("_RimColor", Color.green);
                        return;
                    }

                    // 选中相同物体
                    if (_selectedArObject == hitInfo.collider.gameObject)
                    {
                        print("相同物体");
                        return;
                    }

                    // disable 前一选中模型
                    GetSelectArModel(_selectedArObject).TransfromAroundAndDistance.enabled = false;
                    GetSelectArModel(_selectedArObject).RotateAndUpDown.enabled            = false;
                    GetSelectArModel(_selectedArObject).DoubleClickChangeStatus.enabled    = false;
                    _selectedArObject.GetComponent <MeshRenderer>().material.SetColor("_RimColor", Color.white);

                    _selectedArObject = modelInfo.ArGameObject;
                    // 激活当前选择模型
                    modelInfo.TransfromAroundAndDistance.enabled = true;
                    modelInfo.RotateAndUpDown.enabled            = false;
                    modelInfo.DoubleClickChangeStatus.enabled    = true;
                    Renderer render = _selectedArObject.GetComponent <MeshRenderer>();
                    render.material.shader = Shader.Find("CM/RimLight");
                    render.material.SetColor("_RimColor", Color.green);
                    print("render over");
                }
            }
        }
        // Start is called before the first frame update
        void Start()
        {
            controlDetail.SetActive(false);
            _controlStatusImage       = controlStatus.GetComponent <Image>();
            _controlStatusDetailTexts = controlDetail.GetComponentsInChildren <Text>();
            controlStatus.GetComponent <LongPressEventTrigger>().onLongPress.AddListener(
                () =>
            {
                print("长按");
                controlDetail.SetActive(!controlDetail.activeSelf);
            }

                );
            _taskList    = TaskLab.Get().GetTaskList();
            _abstractMap = map.GetComponent <AbstractMap>();
            bag.GetComponent <BagController>().SetOnMyItemClick((GameObject currentAddGameObject, List <ArModelInfo> putArObjects) =>
            {
                _putArObjects = putArObjects;
                print(_putArObjects);
                // _selectedArObject = currentAddGameObject;
                bag.SetActive(false);
                _hasShowItems = false;
            });

            setModelButton.onClick.AddListener(() =>
            {
                if (_selectedArObject == null)
                {
                    return;
                }
                var position = _selectedArObject.transform.position;
                var task     = new Task
                {
                    TaskDesc          = _selectedArObject.name + " 2 3 4",
                    TaskLocation      = _abstractMap.WorldToGeoPosition(position),
                    TaskModelRotation = _selectedArObject.transform.rotation,
                    TaskModelName     = _selectedArObject.transform.name.Split('(')[0]
                };
                _taskList.Add(task);
                GameObject.Find("Text").GetComponent <Text>().text += "\nTaskList.Count:" + _taskList.Count + "\nPutedGameObject position:" + position + "\n" + "PutedGameObject Latlng:" + _abstractMap.WorldToGeoPosition(position);                print("PutedGameObject position:" + position);
                print("PutedGameObject Latlng:" + _abstractMap.WorldToGeoPosition(position));
            });

            showItemsButton.onClick.AddListener(() =>
            {
                if (_hasShowItems)
                {
                    bag.SetActive(false);
                }
                else
                {
                    bag.SetActive(true);
                }
                _hasShowItems = !_hasShowItems;
            });

            // 找到当前选择的模型,删除它的所有信息
            deleteModelButton.onClick.AddListener(() =>
            {
                ArModelInfo modelInfo = _putArObjects.Find((info) => info.ArGameObject.name == _selectedArObject.name);

                if (modelInfo == null)
                {
                    return;
                }
                print(modelInfo.ArGameObject.name);
                Destroy(modelInfo.ArGameObject);
                Destroy(modelInfo.Anchor);
                _putArObjects.Remove(modelInfo);
            });
        }
        /// <summary>
        /// 通过go获取当前所放置所有模型中与此模型相关的所有信息
        /// </summary>
        /// <returns>选择AR模型的所有信息.</returns>
        /// <param name="go">当前选中的模型</param>
        ArModelInfo GetSelectArModel(GameObject go)
        {
            ArModelInfo modelInfo = _putArObjects.Find((info) => info.ArGameObject.name == go.name);

            return(modelInfo);
        }