当前位置:   article > 正文

【踩坑】通过Instantiate实例化对象后,发现对象不能移动?_unity gameobject instantiate第一次数据画不出来

unity gameobject instantiate第一次数据画不出来

错误示范

我的想法是在场景中加载一个对象,然后让它向前移动,结果测试的时候obj对象在场景中一动不动,搞半天也找不到原因,┭┮﹏┭┮,本来就很菜了,现在连个移动都解决不了,差点被自己气哭了。

private GameObject obj;
public Vector3 startPos;

void Start()
{
	//从Resources文件夹中加载我的预制体
	obj = Resources.Load("ball") as GameObject;
	//在startPos处实例化obj
	Instantiate(obj,startPos,Quaternion.identity);	
}

void Update()
{
	//让obj向前移动
	obj.transform.Translate(Vector3.forward * 1 * Time.deltaTime);
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

错误原因

在代码中“此obj非彼obj”

Instantiate()

Instantiate()方法是有返回值的,这个返回值才是场景那个不会动的对象。

然而我犯的错就是,误以为从Resources中加载出来的obj就是场景中的对象。

Resources.Load()是把资源加载到内存当中,并没有加载到场景

所以我在Update中对obj进行位移,根本就作用不到场景中被实例化出来的那个对象

解决办法

记录Instantiate()的返回值

public Transform StartPos;
public Transform EndPos;

private Object LoadObj;
private GameObject ball;
    
// Start is called before the first frame update
void Start()
{
	LoadObj = Resources.Load("ball");
	ball = Instantiate(LoadObj, StartPos.position,Quaternion.identity) as GameObject;
}

// Update is called once per frame
void Update()
{
	ball.transform.Translate(Vector3.forward * 1 * Time.deltaTime,Space.Self);
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/566394
推荐阅读
相关标签
  

闽ICP备14008679号