怎么在unity 中用c#脚本更改预制件中的参数大小

怎么在unity 中用c#脚本更改预制件中的参数大小,第1张

预制件中的参数有很多:比如transform下的position、rotation、scale参数, 还有自身挂着的脚本参数.假如你是要改变预制件的scale的话,可以参考参考下面的代码:

GameObject goClone=GameObject.Instantiate(goPerfab)

goClone.GetComponent<Transform>().localScale=new Vector3(2, 2, 2)

我写的只是一个实例,可以参考参考,并不是绝对的哦,遇到特殊情况要做特别分析。

如果对楼主有帮助,给个采纳好不,谢谢啦

首先,在场景中添加一个Cube,添加为预制件。

创建一个脚本,在脚本中写入下面的代码:

using UnityEngine

using System.Collections

using System.Collections.Generic

public class qianjing : MonoBehaviour

{

public Transform prefab//定义预制件

public Vector3 onepos//定义起始位置

public Vector3 nextpos//定义下一个位置

public int num//数量

public Vector3 minsize//最小范围

public Vector3 maxsize//最大范围

Queue<Transform>queues//队列

public float distance

void Start()

{

queues = new Queue<Transform>(num)//实例化队列

for (int i = 1i <numi++)

{

Transform trans = GameObject.Instantiate(prefab)//实例化预制件

queues.Enqueue(trans)//将预制件添加至队列

}

nextpos = onepos//起始位置 = 下一位置

for (int i = 1i <numi++)

{

Keep()

}

}

void Update()

{

if (Run.distances - queues.Peek().position.x >= distance)//物体移动距离与预制件长度的差

{

Keep()

}

}

/// <summary>

/// 预制件排列

/// </summary>

private void Keep()

{

//(预制件)随机大小

Vector3 ban = new Vector3(Random.Range(minsize.x, maxsize.x), Random.Range(minsize.y, maxsize.y), Random.Range(minsize.z, maxsize.z))

Transform trans = queues.Dequeue()//暂时移除(预制件)

Vector3 poss = nextpos//获取下一个预制件

poss.y += ban.y * 0.5f//预制件在Y轴方向上移预制件的一半距离

poss.x += ban.x * 0.5f//预制件在X轴方向右移预制件的一半距离

trans.localScale = ban//重新生成随机预制件

trans.position = poss//获取下一个预制件位置

nextpos.x += ban.x// 预制件在X轴方向右移(前)预制件大小的距离

queues.Enqueue(trans)//添加队列中

}

}返回场景,创建一个空游戏体,将脚本挂载在空游戏体上

点击运行,在游戏窗口就可以看到随机产生的游戏路径。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11899019.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存