//改变选中的组件 public void ChangeCheckedObj(GameObject obj) { Debug.Log("ChangeCheckedObj obj.name=" + obj.name); var parentObj = obj; if (currentCheckObj != null) { ClickAndRotate car = currentCheckObj.gameObject.GetComponent <ClickAndRotate>(); car.SetChecked(false); } else { //第一个选中的是女孩 _spr = parentObj.GetComponent <SpriteRenderer>(); } currentCheckObj = obj; ClickAndRotate ca = parentObj.GetComponent <ClickAndRotate>(); if (ca.RotateObj != null) { Debug.Log("parentObj car.RotateObj != null"); parentObj = ca.RotateObj; } //旋转 if (ca.OpType == 1) { choose.SetActive(true); // choose2.SetActive(false); choose.transform.SetParent(parentObj.transform); choose.transform.position = parentObj.transform.position; // choose2.transform.parent = null; } //滑动 else if (ca.OpType == 2) { choose.SetActive(false); // choose2.SetActive(true); // choose2.transform.SetParent(parentObj.transform); // choose2.transform.position = parentObj.transform.position; choose.transform.parent = null; } // Debug.Log("Choose set true parentObj.name=" + parentObj.name); // choose.transform.parent = parentObj.transform; // choose.transform.position = parentObj.transform.position; // Debug.Log("set Choose parent obj choose.transform.position=" + choose.transform.position); }
// Update is called once per frame void Update() { // Debug.Log("ActiveType=" + ActiveType + ",lastShiningTime=" + lastShiningTime); if (IsPlaying) { if (AnimationObj == null) { ResetInfo(); //隐藏激活前的组件 gameObject.SetActive(false); ActivedObj.SetActive(true); ClickAndRotate car = ActivedObj.GetComponent <ClickAndRotate>(); car.SetChecked(true); } else { bool changeAniSpr = false; if (framePlayTime >= DeltaPerFrame) { //正向播放且当前帧数等于最后一帧 播放完成 if (!IsOpposePlay) { if (frameIndex >= Frames.Length - 1) { ResetInfo(); //动画播放完成,隐藏播放动画的组件 AnimationObj.SetActive(false); //显示激活后的组件 ActivedObj.SetActive(true); //隐藏激活前的组件 gameObject.SetActive(false); ObjectEventDispatcher.dispatcher.dispatchEvent(new UEvent(EventTypeName.LightStatusChange), null); return; } else { frameIndex++; changeAniSpr = true; } } //反向播放回到第一帧,播放结束 else { if (frameIndex <= 0) { ResetInfo(); //动画播放完成,隐藏播放动画的组件 AnimationObj.SetActive(false); ObjectEventDispatcher.dispatcher.dispatchEvent(new UEvent(EventTypeName.LightStatusChange), null); return; } else { frameIndex--; changeAniSpr = true; } } framePlayTime = 0; } if (changeAniSpr) { SpriteRenderer aniSpr = AnimationObj.GetComponent <SpriteRenderer>(); Debug.Log("frameIndex=" + frameIndex + ",Frames.length=" + Frames.Length); aniSpr.sprite = Frames[frameIndex]; ObjectEventDispatcher.dispatcher.dispatchEvent(new UEvent(EventTypeName.LightStatusChange), null); } framePlayTime += Time.deltaTime; if (ActiveType == 2) { lastShiningTime -= Time.deltaTime; if (lastShiningTime < 0) { lastShiningTime = 0; //正向播放改反向 if (!IsOpposePlay) { //持续照射时间归零,开始反向播放动画 IsOpposePlay = true; //重置framePlayTime framePlayTime = 0; ObjectEventDispatcher.dispatcher.dispatchEvent(new UEvent(EventTypeName.LightStatusChange), null); } } } } } if (ActiveType == 3) { lastShiningTime -= Time.deltaTime; if (lastShiningTime < 0) { lastShiningTime = 0f; //设置播放状态为播放中 if (!IsPlaying) { IsPlaying = true; //向激活方向播放 IsOpposePlay = false; sr.material.color = new Color(1, 1, 1, 0); //设置动画节点显示 AnimationObj.SetActive(true); //重置framePlayTime framePlayTime = 0; ObjectEventDispatcher.dispatcher.dispatchEvent(new UEvent(EventTypeName.LightStatusChange), null); } } } }