[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Перезагрузка ShowBase
ФаерДата: Суббота, 20.06.2015, 16:30 | Сообщение # 1
Лейтенант
Группа: Пользователи
Сообщений: 44
Награды: 1
Репутация: 2
Статус: Offline
Я чё-то никак не разберусь с перезагрузкой игры. В смысле, игрок проиграл, надо начать всё с начала, сбросить прогресс, перестроить карту, но я, если честно, даже ShowBase() остановить не могу.  rolleyes Пробовал посмотреть его и рендерское содержимое dir()'ом, но как-то ничего толкового не нашёл. Не подскажете, как быть!?
 
serg-kkzДата: Воскресенье, 21.06.2015, 14:15 | Сообщение # 2
Генерал-полковник
Группа: Модераторы
Сообщений: 803
Награды: 3
Репутация: 18
Статус: Offline
Ну не знаю насчет перегрузки. Сцену нужно почистить всю, removeNode (). Обнулить переменные или вернуть по умолчанию, остановит все задачи.

ООП  -  
 
serg-kkzДата: Воскресенье, 21.06.2015, 14:55 | Сообщение # 3
Генерал-полковник
Группа: Модераторы
Сообщений: 803
Награды: 3
Репутация: 18
Статус: Offline
Код
# -*- coding: utf-8 -*-    
import direct.directbase.DirectStart          
from direct.gui.DirectGui import *          
from direct.showbase.DirectObject import DirectObject    
from direct.task import Task    
           
class Hp(DirectObject):          
    
       def __init__(self):  

           self.m = loader.loadModel("models/environment")
           self.m.reparentTo(render)
           print render.ls()

                  
                 
           taskMgr.doMethodLater(5, self.life, "life+") # запускаем задачу с задержкой    
                 

       def life(self, task):    
           self.m.removeNode ()
           del self.m
           print render.ls()  
    
hp = Hp()       
run()
 

Вот набросал пример

Думаю только статичную геометрию бессмысленно перегружать. Лучше сделать две функции загрузки для статики и динамики.


ООП  -  

Сообщение отредактировал serg-kkz - Воскресенье, 21.06.2015, 15:17
 
ninthДата: Воскресенье, 21.06.2015, 21:39 | Сообщение # 4
Admin
Группа: Администраторы
Сообщений: 1582
Награды: 5
Репутация: 46
Статус: Offline
Зачем останавливать ShowBase? Это всего лишь скелет, к тому же если ты его остановишь, то не сможешь в т.ч. и менюшки, счёт или что там ещё нужно отрисовать, т.к. остановишь при этом сам процесс рендеринга. Что чистить - зависти от того что добавлял. Как правило, как сказал serg-kkz достаточно удалить геометрию и обнулить, пересоздать твои собственные переменные + возможно потребуется удалить или временно поставить на паузу какие-то созданные задачи в taskMgr.
 
  • Страница 1 из 1
  • 1
Поиск: