Когда использовать несколько пакетов спрайта в XNA? [закрытый]

Если вы можете получить родительский вид. Может быть, эта ссылка , в которой определено совпадение для получения первого потомка представления, может дать вам некоторую подсказку.

     public static Matcher firstChildOf(final Matcher parentMatcher) {
        return new TypeSafeMatcher() {
            @Override
            public void describeTo(Description description) {
                description.appendText("with first child view of type parentMatcher");
            }

            @Override
            public boolean matchesSafely(View view) {       

                if (!(view.getParent() instanceof ViewGroup)) {
                    return parentMatcher.matches(view.getParent());                   
                }
                ViewGroup group = (ViewGroup) view.getParent();
                return parentMatcher.matches(view.getParent()) && group.getChildAt(0).equals(view);

            }
        };
    }

11
задан Strom 3 July 2019 в 21:38
поделиться

3 ответа

В очень редких случаях необходимо использовать несколько пакетов SpriteBatches. Один из примеров, который я часто вижу, - это ситуация, в которой вы хотите применить разные состояния постобработки / рендеринга к разным наборам спрайтов, что требует отдельного пакета SpriteBatch для каждого набора.

Обычно считается хорошей практикой использовать только один пакет, если это вообще возможно, поскольку рисование как можно большего количества вещей в одном пакете намного эффективнее, чем распределение работы по нескольким пакетам. Кроме того, поскольку вы можете управлять порядком сортировки только в пределах одного пакета SpriteBatch, это может затруднить (или сделать невозможным) контроль глубины между спрайтами из разных пакетов.

Короче говоря: есть мыслимые ситуации, в которых вы можете захотеть сделать это , но это'

7
ответ дан 3 December 2019 в 10:26
поделиться

В случаях с DrawableGameComponents может быть проще иметь пакет SpriteBatch для каждого компонента DrawableGameComponent вместо того, чтобы пытаться передать его.

0
ответ дан 3 December 2019 в 10:26
поделиться

Здесь - хороший пример того, когда использовать более 1 SpriteBatch (блог Шона - как обычно - окончательный источник).

SpriteBatch на самом деле не работает любой рисунок, пока вы не вызовете метод End. Это означает, что вы можете начать несколько перекрывающихся пакетов с различными настройками, рисовать спрайты в любом порядке, используя любую комбинацию экземпляров пакета, и контролировать, в каком порядке все содержимое каждого пакета будет отрисовано, путем упорядочивания ваших вызовов End.

Обратите внимание, что этот пример посвящен оптимизации производительности для сцены с альфа-смешиванием и спрайтами, отсортированными по глубине. Когда (или, скорее, , если ) вы столкнетесь с проблемами производительности, можно кое-что получить, используя несколько пакетов SpriteBatches. А пока лучше не усложнять.

2
ответ дан 3 December 2019 в 10:26
поделиться
Другие вопросы по тегам:

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