Создание 2 МБ сборного занимает много времени и отстает от игры

С этим запросом можно увидеть последние N добавленных записей: от менее недавних до самых последних:

db.collection.find().skip(db.collection.count() - N)

Если вы хотите их в обратном порядке:

db.collection.find().sort({ $natural: -1 }).limit(N)

Если вы установите Mongo-Hacker , вы также можете использовать:

db.collection.find().reverse().limit(N)

Если вы устали писать эти команды все время, вы можете создавать пользовательские функции в ~ / .mongorc.js. Например,

function last(N) {
    return db.collection.find().skip(db.collection.count() - N);
}

, затем из оболочки mongo просто введите last(N)

0
задан derHugo 17 January 2019 в 11:01
поделиться

1 ответ

Если префаб настолько велик, то, может быть, просто ваше устройство не способно отобразить его в нужном вам f / s.

Также возможно, что лаги возникают не из самой модели, а из-за инициализации (Awake, OnEnable) обращений к компонентам, прикрепленным к этому объекту.


Если при создании экземпляра происходит только медленно, вы должны использовать Instantiate() только один раз в Awake или Start и отключать / включать объекты только тогда, когда они не нужны, через SetActive ( каким-то образом, что делает пул объектов).

Если задействовано больше сцен, вы должны использовать DontDestroyOnLoad для переноса их на другие сцены.


Вы можете попробовать использовать что-то вроде

async Task LoadModelAsync()
{
    var assetBundle = await GetAssetBundle("www.my-server.com/myfile");
    var prefab = await assetBundle.LoadAssetAsync<GameObject>("myasset");
    GameObject.Instantiate(prefab);
    assetBundle.Unload(false);
}

async Task<AssetBundle> GetAssetBundle(string url)
{
    return (await new WWW(url)).assetBundle;
}

(см. Как использовать Async-await в Unity3d - только то, что они пропускают ; после (await new WWW(url)).assetBundle ])

и используйте его, например, как

private void Awake()
{
    InstantiateAsync();
}

async void InstantiateAsync()
{
    // Example of long running code.
    await LoadModelAsync();
}

(см. Здесь для еще лучших решений ). Но имейте в виду, что объект не будет их сразу же, а будет создан позже.


Или вы можете войти в новую систему заданий Unity , которая кажется еще быстрее ( заявлено здесь )

0
ответ дан derHugo 17 January 2019 в 11:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: