local worldCamera = CS.FindChild(self.gerScene, 'Camera'):GetComponent("Camera") --世界摄像机
local pos = worldCamera:WorldToScreenPoint(self.shadows[i].transform.position); --获取目标物体的屏幕坐标
pos = uicamera:ScreenToWorldPoint(pos); --将屏幕坐标转换为UI的世界坐标
pos.z = 0; --由于NGUI 2D界面的Z轴都为0,这里我们将坐标修改为0.只取其X,Y坐标。
self._CaptainMark.position = Vector3(pos.x,pos.y,pos.z); --将修改过的坐标赋给UI界面
Vector3 pos = uicamera.WorldToScreenPoint(obj.transform.position); //获取UI界面的屏幕坐标
pos.z = 1f; //设置为零时转换后的pos全为0,屏幕空间的原因,被坑过的我提醒大家,切记要改!
pos = worldCamera.ScreenToWorldPoint(pos); //将屏幕坐标转换为世界坐标
pos.y = 0f;
targetObject.transform.position = new Vector3(pos.x, pos.y, pos.z); //将修改过的坐标赋给目标物体坐标
一个物体改变了父物体 设置他的位置, 世界坐标 position 是不回改变 所以在实例化之前记住他的世界坐标
然后先设置父物体和缩放 和本地坐标 最后设置世界坐标
local pos = preItem.transform.position
local item = CS.NewObject(self._preItem)
local itemTra = item.transform
itemTra.parent = widget_Target.transform
itemTra.localScale = Vector3.one
itemTra.localPosition = Vector3.zero;
itemTra.position = pos