LibGDX গেম বনাম অ্যাপ্লিকেশন অ্যাডাপ্টার


12

আমি যখন একটি নতুন লিবিজিডিএক্স প্রকল্প তৈরি করি তখন মূল প্রকল্পের মূল শ্রেণি অ্যাপ্লিকেশনএডাপ্টার প্রসারিত করে । এটি দেখতে কেমন দেখাচ্ছে।

package com.marimba.apptest;

import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL20;

public class AppMain extends ApplicationAdapter {   
    @Override
    public void create () {

    }

    @Override
    public void render () {
        Gdx.gl.glClearColor(1, 0, 0, 1);
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

    }
}

তাই আমি পরিবর্তন করতে হবে ApplicationAdapter করার খেলা যদি আমি স্ক্রিন মধ্যে স্যুইচ করার জন্য, যাতে setScreen পদ্ধতি কল করতে চান। তাহলে অ্যাপ্লিকেশনএডাপ্টারের ব্যবহার কী ? আমি কখন এটি ব্যবহার করব?

উত্তর:


7

@ ব্যবহারকারী 3068350 যেমন বলেছে, গেম এবং অ্যাপ্লিকেশনএডাপ্টার উভয়ই অ্যাপ্লিকেশনলাইস্টার প্রয়োগ করে। আপনি যদি আপনার গেমের স্ক্রিন ইন্টারফেসটি ব্যবহার করার পরিকল্পনা করেন তবে গেমটি প্রসারিত করা কার্যকর, তবে কিছু বিকাশকারীরা আলাদা পদ্ধতি গ্রহণ করতে এবং স্ক্রিন পরিচালনাকে তাদের নিজস্ব পদ্ধতিতে পরিচালনা করতে চাইতে পারেন। যদি এটি হয় তবে এগুলি অ্যাপ্লিকেশন অ্যাডাপ্টারটি প্রসারিত করবে।

ব্যক্তিগতভাবে, আমি আমার ক্লাসগুলি পছন্দমতো আপডেটযোগ্য এবং / অথবা অঙ্কনযোগ্য ইন্টারফেসটি প্রয়োগ করতে পছন্দ করি, কারণ আমি আমার রেন্ডার পদ্ধতিটিকে আপডেট এবং অঙ্কনের মধ্যে পৃথক করি। এই ক্ষেত্রে, স্ক্রিন ব্যবহার করা উদ্দেশ্যকে পরাস্ত করবে কারণ ইন্টারফেসটি একটি রেন্ডার পদ্ধতি থাকে।


1

গেম ক্লাস অ্যাপ্লিকেশনলিস্টার ইন্টারফেস প্রয়োগ করে এবং এটি কেবল এমন একটি শ্রেণি যা বিভিন্ন স্ক্রিনের মধ্যে স্যুইচ করা সহজ করার জন্য ডিজাইন করা হয়েছে। অ্যাপ্লিকেশনলিস্টারে কোনও পদ্ধতি কল করার সময়, গেম ক্লাসটি বর্তমানে সেট করা স্ক্রিনে এটি অর্পণ করার যত্ন নেয়।


1
তবে কখন আমার অ্যাপ্লিকেশনএডাপ্টার ব্যবহার করা উচিত? এবং আমি এখানে স্ক্রিনগুলি কীভাবে ব্যবহার করব।
ওয়াহে মুরাদিয়ান

2
আপনার অ্যাপ্লিকেশনএডাপ্টার ব্যবহার করার দরকার নেই। অ্যাপ্লিকেশনএডাপ্টার এবং গেম উভয়ই অ্যাপ্লিকেশনলিস্টার ইন্টারফেস প্রয়োগ করে। একটি অ্যাডাপ্টার ক্লাস কেবল একটি শ্রেণি যা একটি ইন্টারফেসের জন্য কঙ্কাল বাস্তবায়ন সরবরাহ করে যাতে আপনার কোডটি খালি পদ্ধতিগুলির সাথে বিশৃঙ্খলা করতে হবে না। গেমের সাথে পর্দা ব্যবহার করতে আপনি সেটস্ক্রিন কল করেন এবং এমন একটি ক্লাসে পাস করেন যা স্ক্রিন ইন্টারফেস প্রয়োগ করে। আপনি আপনার স্ক্রিন ক্লাসগুলি কনস্ট্রাক্টরে একটি গেম অবজেক্টে নিতে পারেন যাতে আপনি একটি স্ক্রিনের মধ্যে পর্দা পরিবর্তন করতে পারেন।
ব্যবহারকারী 3068350

1
সুতরাং কেন তারা অ্যাপ্লিকেশন অ্যাডাপ্টার তৈরি করেছে যদি এর কোনও ব্যবহার না হয়?
ওয়াহে মুরাদিয়ান

2
@ ভাহেমুরাদায়ান, ব্যবহারকারী ইতিমধ্যে উত্তর দিয়েছিলেন: আপনাকে খালি পদ্ধতির মৃতদেহগুলির সাথে আপনার কোডটি বিশৃঙ্খলা করতে হবে না। আপনি যখন ApplicationListenerসরাসরি প্রয়োগ করেন , আপনাকে প্রয়োজনীয় সমস্ত পদ্ধতি সরবরাহ করতে হবে, যার সাথে আপনার প্রয়োজন হয় না (যেমন pause()বা resume()যা সর্বদা ব্যবহৃত হয় না) সহ। ApplicationAdapterআপনার সুবিধার্থে সেখানে রয়েছে, সুতরাং আপনাকে খালি পদ্ধতিগুলি রাখার দরকার নেই। এটি একটি সাধারণ ইউটিলিটি শ্রেণি, এটি কোনও নতুন কার্যকারিতা যুক্ত করে না - এটি কেবল আপনার কোড ক্লিনার (বা আরও কম ) রাখে ।
জাস্ট্যাক্লিউলেস নিউবি

1

অ্যাপ্লিকেশনএডাপ্টার এবং গেম শ্রেণি অ্যাপ্লিকেশনলাইজনারের ইন্টারফেসটি প্রয়োগ করার সাথে সাথে আপনার গেমটি তৈরি করার সময় এগুলি উভয়ই প্রায় বিনিময়যোগ্যভাবে ব্যবহার করা যেতে পারে। আপনি যদি স্ক্রিন ব্যবহার শুরু করে থাকেন তবে উভয় বিকল্পের সাহায্যে এগুলি কার্যকর করতে আপনাকে কোনও বিরত নেই।

খেলা বর্গ এটা স্ক্রিন ব্যবহার করে আরো বেশি ওভারহেড একটু হয়েছে। যাইহোক, এই ওভারহেডটি আপনার গেমের বিভিন্ন স্তরের / স্তরগুলি কার্যকর করা সহজ করার জন্য তৈরি করা হয়েছে। এটি লক্ষ্য করা গুরুত্বপূর্ণ যে এই ওভারহেডটি ন্যূনতম।

ApplicationAdapter কোন অতিরিক্ত ওভারহেড (এটা একটি ApplicationListener একটি সোজা বাস্তবায়ন) আছে। আপনাকে নিজেরাই সবকিছু করতে হওয়ায় এটি আপনাকে আরও নিয়ন্ত্রণ দেয়। ব্যক্তিগতভাবে, আমি অ্যাপ্লিকেশন অ্যাডাপ্টার ব্যবহার করতে পছন্দ করি।

টিএল; ডিআর: তাদের মধ্যে বাস্তব পার্থক্য নেই। অ্যাপ্লিকেশনএডাপ্টার আপনাকে আরও কিছুটা নিয়ন্ত্রণ দেয় এবং গেমটি একটু কম কাজ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.