克隆物体的子物体的控制属于动态显隐控制,无法提前拖动到代码的变量之上,正好项目中遇到了,因此专门写了一个小程序测试了一下 克隆物体的子物体名字的不变性,克隆的物体这里我单独命名了。主界面如下(包括了hide按钮的挂载代码情况):
主代码CloneObject.cs如下
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CloneObject : MonoBehaviour
{
public GameObject boneOriginal;
public GameObject boneReposition;
public GameObject bonetop;
public GameObject Targetplane;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
}
public void CreatTibia()
{
// GameObject targetobject = GameObject.Find("ModelTarget/TestObject");//
GameObject targetobject = GameObject.Find("AJ19_Tibia");
Vector3 cubeposition = targetobject.transform.position;
Quaternion cuberotation = targetobject.transform.rotation;//这段可以用的,只是获得的cubeposition和markerposition之间又多了一层误差。要知道本来获得的markerposition是有眼镜环境定位的误差的
// Vector3 cubeposition = markerposition + markerrotation * (cubeposition - markerposition);//此句虽然是用的向量加旋转,但依然是眼镜获得的两个全局值再运算,跟上面一个效果,多一层误差。
Debug.Log($"cubeposition is ({cubeposition.x},{cubeposition.y},{cubeposition.z}),cuberotation is ({cuberotation.eulerAngles.x},{cuberotation.eulerAngles.y},{cuberotation.eulerAngles.z})");
Debug.Log($"cube local position is ({targetobject.transform.localPosition.x},{targetobject.transform.localPosition.y},{targetobject.transform.localPosition.z}),cube local rotation is ({targetobject.transform.localRotation.eulerAngles.x},{targetobject.transform.localRotation.eulerAngles.y},{targetobject.transform.localRotation.eulerAngles.z})");
GameObject newobject = GameObject.Instantiate(targetobject, cubeposition, cuberotation);
newobject.name = "newtibia";
Debug.Log("cube is created!");
targetobject.SetActive(false);
boneReposition = GameObject.Find("newtibia/Tibia dis repositionsegmentation");
Targetplane= GameObject.Find("newtibia/Target planesegmentation");
}
public void hide()
{
if (!boneReposition.activeInHierarchy)
{
boneReposition.SetActive(true);
Targetplane.SetActive(true);
}
else
{
boneReposition.SetActive(false);
Targetplane.SetActive(false);
}
}
}
克隆按钮的挂在如下,四个prefab物体变量都是空着的,运行过程中赋值。
运行,点击clone按钮之后如下(左侧生成了新的克隆物体,右侧的prefab因动态赋值,多了两个物体):
点击hide按钮之后如下(其实此时物体有两个部分隐藏了):
再次点击Hide按钮如下(都又出来了):