Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 文本网格pro移动问题 使用系统集合; 使用System.Collections.Generic; 使用UnityEngine; 使用TMPro; 公共类产卵单位:单行为 { 公共静态整数1=100; 公共静态整数2=200; 公共游戏对象暗影狼; 公共游戏对象食人族; //公共游戏对象数量单位1; //公共游戏对象数量2; [SerializeField]私有游戏对象numberofunits1; [SerializeField]专用TMP_文本编号OfUnits2; 游戏对象someObj; 私有void Start(){ //numberofunits1.text=“200”; numberofunits2.text=“600”; 实例化(numberofunits1,新向量3(50,-1,-5),四元数.identity); 实例化(numberofunits2,新向量3(45,-1,-5),四元数.identity); 实例化(暗影狼,新向量3(56,-1,-5),四元数.identity); 暗影狼。设置活动(真); 实例化(食人族,新向量3(-56,-1,-5),四元数.identity); 食人族。SetActive(true); someObj=新游戏对象(“someObj”); numberofunits1.transform.parent=someObj.transform; //GameObject someObj=新游戏对象(“someObj”); //someObj.AddComponent(单元数1); //Vector3 pozycjacannibala=食人族.transform.position; //向量3 pozycjashadowwalfa=ShadowWolf.transform.position; //numberofunits1.text=“200”; numberofunits2.text=“100”; } 无效更新(){ //GameObject someObj=新游戏对象(“someObj”); //numberofunits1.transform.parent=someObj; //Gameobject numberofunits1g=Gameobject.Find(“numberofunits1g”).GetComponent(); //Vector3 pozycjacannibala=食人族.transform.position; //向量3 pozycjashadowwalfa=ShadowWolf.transform.position; //numberofunits1.transform.position=新向量3(20,-1,-5); numberofunits2.transform.position=新向量3(Cannibal.transform.position.x,Cannibal.transform.position.y,Cannibal.transform.position.z); numberofunits2.GetComponent().localPosition+=新向量3(20,-1,-5); //numberofunits1.GetComponent().localPosition=新向量3(-56,-1,-5); //Vector3 poz=numberofunits1.transform.position; //印刷(poz); someObj.transform.position=新向量3(Cannibal.transform.position.x,Cannibal.transform.position.y,Cannibal.transform.position.z); //numberofunits1.transform.position=新向量3(40,12,-5); //numberofunits1.anchoredPosition=新矢量2(20,-1); //Vector3 poz=numberofunits1.transform.position; //印刷(poz); } }_C#_Unity3d - Fatal编程技术网

C# 文本网格pro移动问题 使用系统集合; 使用System.Collections.Generic; 使用UnityEngine; 使用TMPro; 公共类产卵单位:单行为 { 公共静态整数1=100; 公共静态整数2=200; 公共游戏对象暗影狼; 公共游戏对象食人族; //公共游戏对象数量单位1; //公共游戏对象数量2; [SerializeField]私有游戏对象numberofunits1; [SerializeField]专用TMP_文本编号OfUnits2; 游戏对象someObj; 私有void Start(){ //numberofunits1.text=“200”; numberofunits2.text=“600”; 实例化(numberofunits1,新向量3(50,-1,-5),四元数.identity); 实例化(numberofunits2,新向量3(45,-1,-5),四元数.identity); 实例化(暗影狼,新向量3(56,-1,-5),四元数.identity); 暗影狼。设置活动(真); 实例化(食人族,新向量3(-56,-1,-5),四元数.identity); 食人族。SetActive(true); someObj=新游戏对象(“someObj”); numberofunits1.transform.parent=someObj.transform; //GameObject someObj=新游戏对象(“someObj”); //someObj.AddComponent(单元数1); //Vector3 pozycjacannibala=食人族.transform.position; //向量3 pozycjashadowwalfa=ShadowWolf.transform.position; //numberofunits1.text=“200”; numberofunits2.text=“100”; } 无效更新(){ //GameObject someObj=新游戏对象(“someObj”); //numberofunits1.transform.parent=someObj; //Gameobject numberofunits1g=Gameobject.Find(“numberofunits1g”).GetComponent(); //Vector3 pozycjacannibala=食人族.transform.position; //向量3 pozycjashadowwalfa=ShadowWolf.transform.position; //numberofunits1.transform.position=新向量3(20,-1,-5); numberofunits2.transform.position=新向量3(Cannibal.transform.position.x,Cannibal.transform.position.y,Cannibal.transform.position.z); numberofunits2.GetComponent().localPosition+=新向量3(20,-1,-5); //numberofunits1.GetComponent().localPosition=新向量3(-56,-1,-5); //Vector3 poz=numberofunits1.transform.position; //印刷(poz); someObj.transform.position=新向量3(Cannibal.transform.position.x,Cannibal.transform.position.y,Cannibal.transform.position.z); //numberofunits1.transform.position=新向量3(40,12,-5); //numberofunits1.anchoredPosition=新矢量2(20,-1); //Vector3 poz=numberofunits1.transform.position; //印刷(poz); } }

C# 文本网格pro移动问题 使用系统集合; 使用System.Collections.Generic; 使用UnityEngine; 使用TMPro; 公共类产卵单位:单行为 { 公共静态整数1=100; 公共静态整数2=200; 公共游戏对象暗影狼; 公共游戏对象食人族; //公共游戏对象数量单位1; //公共游戏对象数量2; [SerializeField]私有游戏对象numberofunits1; [SerializeField]专用TMP_文本编号OfUnits2; 游戏对象someObj; 私有void Start(){ //numberofunits1.text=“200”; numberofunits2.text=“600”; 实例化(numberofunits1,新向量3(50,-1,-5),四元数.identity); 实例化(numberofunits2,新向量3(45,-1,-5),四元数.identity); 实例化(暗影狼,新向量3(56,-1,-5),四元数.identity); 暗影狼。设置活动(真); 实例化(食人族,新向量3(-56,-1,-5),四元数.identity); 食人族。SetActive(true); someObj=新游戏对象(“someObj”); numberofunits1.transform.parent=someObj.transform; //GameObject someObj=新游戏对象(“someObj”); //someObj.AddComponent(单元数1); //Vector3 pozycjacannibala=食人族.transform.position; //向量3 pozycjashadowwalfa=ShadowWolf.transform.position; //numberofunits1.text=“200”; numberofunits2.text=“100”; } 无效更新(){ //GameObject someObj=新游戏对象(“someObj”); //numberofunits1.transform.parent=someObj; //Gameobject numberofunits1g=Gameobject.Find(“numberofunits1g”).GetComponent(); //Vector3 pozycjacannibala=食人族.transform.position; //向量3 pozycjashadowwalfa=ShadowWolf.transform.position; //numberofunits1.transform.position=新向量3(20,-1,-5); numberofunits2.transform.position=新向量3(Cannibal.transform.position.x,Cannibal.transform.position.y,Cannibal.transform.position.z); numberofunits2.GetComponent().localPosition+=新向量3(20,-1,-5); //numberofunits1.GetComponent().localPosition=新向量3(-56,-1,-5); //Vector3 poz=numberofunits1.transform.position; //印刷(poz); someObj.transform.position=新向量3(Cannibal.transform.position.x,Cannibal.transform.position.y,Cannibal.transform.position.z); //numberofunits1.transform.position=新向量3(40,12,-5); //numberofunits1.anchoredPosition=新矢量2(20,-1); //Vector3 poz=numberofunits1.transform.position; //印刷(poz); } },c#,unity3d,C#,Unity3d,我想做的是将文本移动到某个位置(文本是预制的,我使用的是文本网格专业版)。我遇到的问题是,实例化可以正确地将文本设置在所需的位置,但是我以后似乎无法移动它。代码没有抛出任何错误,我甚至设置了一个打印功能,以查看代码显示的位置和位置是否正确,但屏幕上的文本仍然在同一位置。项目是在2d中创建的。移动UI元素时,需要使用RectTransform而不是常规转换(但是常规转换仍适用于世界空间UI) 例如,您可以使用: numberofunits1.GetComponent().anchoredPosit

我想做的是将文本移动到某个位置(文本是预制的,我使用的是文本网格专业版)。我遇到的问题是,实例化可以正确地将文本设置在所需的位置,但是我以后似乎无法移动它。代码没有抛出任何错误,我甚至设置了一个打印功能,以查看代码显示的位置和位置是否正确,但屏幕上的文本仍然在同一位置。项目是在2d中创建的。

移动UI元素时,需要使用RectTransform而不是常规转换(但是常规转换仍适用于世界空间UI)

例如,您可以使用: numberofunits1.GetComponent().anchoredPosition=新向量2(20,-1)

如果确实需要z位置,可以使用: numberofunits1.GetComponent().anchoredPosition3D=新向量3(20,-1,-5)

您可以在此处找到有关RectTransform的文档:

我还建议对您尝试使用的UI元素使用TextMeshPro变量。所以在本例中:TMP_文本

因此,您的变量声明将变成: [序列化字段]专用TMP_文本编号1; [SerializeField]专用TMP_文本编号OfUnits2


如果您试图移动全套UI,那么在画布上移动常规转换可能会很有用。但是,在这种情况下,画布需要是世界空间。

textmashpro不包含变换组件,而是包含rect transform,因此您需要更改rect trasnform,或者您可以创建类似的游戏对象

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using TMPro;
public class spawningunits : MonoBehaviour
{
    
    public static int amount1 = 100;
    public static int amount2 = 200;
    public GameObject ShadowWolf;
    public GameObject Cannibal;
    //public GameObject numberofunits1;
    //public GameObject numberofunits2;
    [SerializeField] private GameObject numberofunits1;
    [SerializeField] private TMP_Text numberofunits2;
    GameObject someObj;
    
    
    
    
    private void Start(){
        
        
        
        //numberofunits1.text = "200";
        numberofunits2.text = "600";
        Instantiate(numberofunits1, new Vector3(50, -1, -5), Quaternion.identity);
        Instantiate(numberofunits2, new Vector3(45, -1, -5), Quaternion.identity);
        
        Instantiate(ShadowWolf, new Vector3(56, -1, -5), Quaternion.identity);
        ShadowWolf.SetActive(true);
        Instantiate(Cannibal, new Vector3(-56, -1, -5), Quaternion.identity);
        Cannibal.SetActive(true);

        someObj = new GameObject("SomeObj");
        numberofunits1.transform.parent = someObj.transform;
        
        //GameObject someObj = new GameObject("SomeObj");
        //someObj.AddComponent(numberofunits1);
        
        //Vector3 pozycjacannibala = Cannibal.transform.position;
        //Vector3 pozycjashadowwolfa = ShadowWolf.transform.position;
        //numberofunits1.text = "200";
        numberofunits2.text = "100";
        
        
    }
    void Update() {
        
        
        
        //GameObject someObj = new GameObject("SomeObj");
        //numberofunits1.transform.parent = someObj;
        //Gameobject numberofunits1g = Gameobject.Find("numberofunits1g").GetComponent<GameObject>();
        //Vector3 pozycjacannibala = Cannibal.transform.position;
        //Vector3 pozycjashadowwolfa = ShadowWolf.transform.position;
        
        //numberofunits1.transform.position = new Vector3(20,-1,-5);
        numberofunits2.transform.position = new Vector3(Cannibal.transform.position.x,Cannibal.transform.position.y,Cannibal.transform.position.z);
        numberofunits2.GetComponent<RectTransform>().localPosition += new Vector3(20,-1,-5);
        //numberofunits1.GetComponent<RectTransform>().localPosition = new Vector3(-56,-1,-5);
        //Vector3 poz = numberofunits1.transform.position;
        //print(poz);
        someObj.transform.position = new Vector3(Cannibal.transform.position.x,Cannibal.transform.position.y,Cannibal.transform.position.z);
        //numberofunits1.transform.position = new Vector3(40, 12, -5);
        //numberofunits1.anchoredPosition = new Vector2(20,-1);
        //Vector3 poz = numberofunits1.transform.position;
        
        //print(poz);
        
        
        
        
        
        
                
                
        
    }
}
[SerializeField]私有游戏对象numberofunits1;
[SerializeField]私有游戏对象numberofunits2;
游戏对象someObj;
void Start(){
someObj=新游戏对象(“someObj”);
numberofunits1.transform.parent=someObj;
}
无效更新()
{
numberofunits1.text=“200”;
numberofunits2.text=“100”;
//Gameobject numberofunits1g=Gameobject.Find(“numberofunits1g”).GetComponent();
//Vector3 pozycjacannibala=食人族.transform.position;
//向量3 pozycjashadowwalfa=ShadowWolf.transform.position;
numberofunits2.GetComponent().localPosition+=新向量3(20,-1,-5)*Time.deltTime;
someObj.transform.position+=新向量3(Cannibal.transform.position.x,Cannibal.transform.position.y,Cannibal.transform.position.z)*Time.deltaTime;
Vector3 poz=numberofunits1.GetComponent().localPosition.transform.position;
印刷(poz);
}

我猜它可以工作,但你看不到起始位置,因为它持续半帧。在更新中,运行Input.GetKeyDown中的定位代码,这样它需要按移动。再想一想,您也正在设置预置。创建的项目没有存储,也可能不在画布下,因此它们不会很好地显示是的,但问题是它们确实显示了,但不会更改它们的位置。我认为您看到的是原始对象,Instance没有将新对象放置在任何位置,因此您与它没有连接。NumberofUnits1是您要复制和放置的原始对象。我尝试了上面的代码,但前两行抛出了一个错误Assets\scripts\spawningunits.cs
[SerializeField] private GameObject numberofunits1;
[SerializeField] private GameObject numberofunits2;

GameObject someObj;    
void Start(){
   someObj = new GameObject("SomeObj");
   numberofunits1.transform.parent = someObj;
}


void Update() 
{
    numberofunits1.text = "200";
    numberofunits2.text = "100";
    //Gameobject numberofunits1g = Gameobject.Find("numberofunits1g").GetComponent<GameObject>();
    //Vector3 pozycjacannibala = Cannibal.transform.position;
    //Vector3 pozycjashadowwolfa = ShadowWolf.transform.position;
    
    numberofunits2.GetComponent<RectTransform>().localPosition += new Vector3(20,-1,-5) * Time.deltTime;
    someObj.transform.position += new Vector3(Cannibal.transform.position.x,Cannibal.transform.position.y,Cannibal.transform.position.z) * Time.deltaTime;
    Vector3 poz = numberofunits1.GetComponent<RectTransform>().localPosition.transform.position;
    print(poz);
}