【问题标题】:Unity: Deactivate GameObject on creationUnity:在创建时停用游戏对象
【发布时间】:2018-08-02 14:56:41
【问题描述】:

我正在运行时创建一个游戏对象(带纹理的矩形),同时启动我的应用程序并希望稍后显示它。但是,如果我立即将其设置为非活动状态 (myGO.setActive(false)) 或者即使它仍在创建它(直接在 GameObject o = new GameObject() 之后),它会显示一秒钟,然后再次消失。

我知道我可以在第一次真正需要游戏对象时创建它,但我想在显示加载屏幕的同时进行所有设置。

是否可以在游戏对象准备好但实际显示之前立即将其设置为非活动状态?

代码(缩短版):

private void StartUpMethod() {
    GameObject myGO = MakePhoto(vertices);

    if(myGO==null) {
        ShowError("Error Message");
    } else {
        myGO.SetActive(false);
    }
}

private GameObject MakePhoto(Vector3[] vertices) {
    byte[] fileData = File.ReadAllBytes(path);
    Texture2D tex = new Texture2D(2,2);
    tex.LoadImage(fileData);

    GameObject o = new GameObject();
    Mesh m = new Mesh();
    Material mat = new Material(Shader.Find("Standard")) { mainTexture = tex };
    Vector3[] vv = new Vector3[] { new Vector3(0,0,0),new Vector3(length,0,0),new Vector3(length,width,0),new Vector3(0,width,0) };

    if(o.GetComponent<MeshFilter>() == null) { o.AddComponent<MeshFilter>(); }
    if(o.GetComponent<MeshRenderer>() == null) { o.AddComponent<MeshRenderer>(); }
    o.GetComponent<MeshFilter>().mesh = m;
    o.GetComponent<MeshRenderer>().material = mat;

    m.vertices = vv;
    m.uv = new Vector2[] {new Vector2(0,0),new Vector2(0,1),new Vector2(1,1),new Vector2(1,0)};
    m.triangles = new int[] { 0,1,2,0,2,3 };
    m.RecalculateBounds();
    m.RecalculateNormals();
    o.transform.Rotate(new Vector3(270,0,0));
    o.transform.Rotate(new Vector3(0,0,270));
    o.transform.position = new Vector3(x,z,y);

    return o;
}

【问题讨论】:

  • 您可以禁用渲染器,或者如果您正在动态实例化,您可以在调用实例化方法之前禁用它。
  • @Daniel 它没有预制件,因此不会进行此类实例化。 ;) 禁用渲染器有效,谢谢!

标签: c# unity3d gameobject disable


【解决方案1】:

也许还禁用MeshRenderer,然后也重新启用它?

myGO.GetComponent<MeshRenderer>().enabled = false;

【讨论】:

  • 在将 GO 设置为非活动状态之前立即执行此操作似乎为时已晚,所以我将其直接放在 o.GetComponent&lt;MeshRenderer&gt;().material = mat; 之后,现在它一秒钟都没有出现。谢谢!
猜你喜欢
  • 2019-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多