所有。
我在Unity制作手机游戏,它是一个侧卷轴。我想要一个平台在屏幕上移动,直到它离开屏幕。然后,我将其位置设置回起点,以便滚动显示无限。这是我的代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ScrollingObject : MonoBehaviour
{
public float speed;
Vector3 startPos;
void Start()
{
startPos = transform.position;
}
void Update()
{
transform.Translate ((new Vector3 (-1, 0, 0)) * speed * Time.deltaTime);
if (transform.position.x < -22.71982)
{
transform.position = startPos;
}
}
}
这样可行,但看起来有点波涛汹涌,而且不顺畅。有没有人有任何建议让这个平台移动得更顺畅?提前谢谢。
答案 0 :(得分:0)
更好的想法是创建两个这样的游戏对象,一个是当前的,另一个将在运行时创建,当前对象即将离开屏幕。您可以创建一个预制件,然后在适当的时间实例化它:
Instantiate(YourPrefab, new Vector3(0, 0, 0), Quaternion.identity);
新的预制实例进入视图后,将其保留为新的当前实例,并删除旧的预制实例。
--------------------- Time ----------------------->
| Current (A) | Next Current (B) |
-------------------------------------------------->
|
v
screen edge here
--------------------- Time ----------------------->
| Old Current (A) | Current (B) |
--------------------------------------------------->
| |
v v
To be destroyed screen edge here
答案 1 :(得分:0)
创建预制件的两个或多个副本(根据您的要求)并维护一个对象池。池的目的是避免破坏对象并再次创建它们。只需禁用该对象并在它到达屏幕时激活它们。滚动时保持交换或更改索引。这样可以避免在游戏对象的初始化步骤(start()或awake())中出现内存碎片和任何计算。