C# 如何在unity中实例化球体对象(球体)的标记

C# 如何在unity中实例化球体对象(球体)的标记,c#,unity3d,C#,Unity3d,我是unity的初学者,我想在球体对象上放置一个标记到一个特定的位置(通过纬度和经度)。我尝试了以下代码: using System.Collections; using System.Collections.Generic; using UnityEngine; public class testPosLatLong : MonoBehaviour { public float longi; public float lati; public float radius; public Tr

我是unity的初学者,我想在球体对象上放置一个标记到一个特定的位置(通过纬度和经度)。我尝试了以下代码:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class testPosLatLong : MonoBehaviour {

public float longi;
public float lati;
public float radius;
public Transform marker;

// Use this for initialization
void Start () {
    // longitude and latitude of uae
    longi=23.4241f;
    lati=53.8478f;
    // Transfer to Radians from Degrees
    float templongi = longi * Mathf.PI / 180;
    float templati = lati * Mathf.PI / 180;

    float Xpos = radius * Mathf.Cos(templati) * Mathf.Cos(templongi);
    float Ypos = radius * Mathf.Cos(templati) * Mathf.Sin(templongi);
    float Zpos = radius * Mathf.Sin(templati);

    Debug.Log ("X, Y, Z" + Xpos + " " + Ypos + " " + Zpos);

    // Set the X,Y,Z pos from the long and lat
    Instantiate(marker);
    marker.position = new Vector3 (Xpos, Zpos, Ypos);

    Debug.Log ("Marked  positions: X, Y, Z" + Xpos + " " + Ypos + " " + Zpos);

 }

 // Update is called once per frame
 void Update () {

 }
}
我需要将此脚本拖动到球体对象或摄影机对象吗?或者创建任何其他对象并在其上拖动。我不知道如何在球体上放置一个标记,因为我完全是统一的初学者

我的球体是一个球体(我向球体添加了材质(添加了地球图像),并使其成为一个球体对象,如屏幕截图所示)。 在将上述脚本添加到摄影机对象后,当我播放并检查控制台时,x、y、z位置为0,并且看不到地球仪上的任何标记

我想在相应的国家/地区添加PIN码并贴上标签。类似于此上的地球仪


嗨,这看起来是个有趣的项目

要回答有关在何处放置脚本的问题,可以将脚本放置在场景中的任何对象上。 在场景中加载对象后,将运行其附加的脚本

不过,在您的情况下,将脚本放置在球体对象上可能是有意义的。 通过执行此操作,可以轻松引用球体对象,并将标记作为球体的子对象附着

至于标记,我建议实例化一个预置。 在资产文件夹中创建一个名为“资源”的文件夹,并在其中放置一个预制件

然后,您可以使用以下代码来实例化预置

//原始对象、实例化位置和新对象的方向
GameObject marker=(GameObject)Resources.Load(“markerobject”);
Vector3位置=新Vector3(20,20,20);
四元数旋转=四元数欧拉(0,90,0);
//脚本附加到的对象
游戏对象世界=this.GameObject;
//实例化预置
实例化(标记、位置、旋转、世界变换);
我已经给了实例化对象一个设置的位置和方向,所以请使用上面的代码作为参考,并根据需要进行调整

至于实例化方法的参数,您可以在这里找到文档

下面是一些参数的细分:

  • 第一个参数(对象):这是您要创建的原始对象 实例化
  • 第二个参数(矢量3):这是 将显示实例化的对象
  • 第三个参数(四元数):这是实例化对象的方向
  • 第四个参数(转换):这将是实例化对象的父对象。如果你不需要给它一个家长,你可以忽略它

您实例化了球体,但移动的是预制件,而不是您制作的预制件。你需要做一些事情,比如var newmarker=实例化(marker),然后newmarker.position=…还有c#脚本,我应该在哪里附加到摄影机对象或球体对象,你有一个示例代码吗,我只是这个统一的初学者code@BugFinder你能帮我把这个预制件添加到球体上吗,我试过你说的,但看不到球体上的对象使用场景调试它的第一个位置。。检查其放置位置我尝试了这个,但我无法在球体(球体)中看到pin。这是我的c#代码,我将其拖动到球体对象。如果对象正确实例化,它应该出现在左侧示例场景中的对象列表中。你能检查一下新物体是否在那里吗?如果是,它可能已在球体对象内实例化,因此我们无法实际看到它。在这种情况下,调整矢量3中的数字(20,20,20);代码的一部分,指向位于球体外部的坐标。否则,请检查您的控制台是否有任何错误。是的,在场景中我可以看到对象。但我设置了x=0.35 y0.35和z=0.25,但在游戏和游戏屏幕中,我无法在球体和游戏屏幕上看到对象:很高兴知道它在某处实例化:)在游戏模式下,将选项卡从“游戏”切换到“场景”。然后双击左侧列表中的实例化对象。这将使编辑器缩放并聚焦于实例化的对象。在那之后,尝试缩小-你可能会发现它被实例化在一个非常远的地方(原因尚不清楚)。我尝试了你所说的,但我的实例化对象(蓝色pin)没有出现在相机上,即使它出现在场景中。请参见此处的相机预览: