তাত্ক্ষণিক জিইউআই - ইয়ে না না? [বন্ধ]


38

আমি কয়েক বছর আগে এমএফসি, কিউটি, ফর্মস, এসডাব্লিউইং এবং বেশ কয়েকটি ওয়েব-জিইউআই ফ্রেমওয়ার্কের মতো প্রচুর "রক্ষণাবেক্ষণ" জিইউআই সিস্টেমগুলির সাথে (অ্যাপ্লিকেশন বিকাশ নিয়ে কাজ করছি)। আমি সবসময় বেশিরভাগ জিইআইআই সিস্টেমের ধারণা অত্যধিক জটিল এবং আনাড়ি খুঁজে পেয়েছি। কলব্যাক ইভেন্টের পরিমাণ, শ্রোতা, ডেটা অনুলিপি, কিছুতে স্ট্রিংয়ের কিছু - রূপান্তর (এবং এই জাতীয়) অ্যাপ্লিকেশনটির অন্যান্য অংশের তুলনায় সর্বদা ভুল এবং মাথা ব্যথার উত্স ছিল। (এমনকি ডেটা বাইন্ডিং / মডেলগুলির "যথাযথ" ব্যবহার সহ)।

এখন আমি কম্পিউটার গেমস লিখছি :)। আমি এখনও পর্যন্ত একটি জিইউআইয়ের সাথে কাজ করেছি: মিয়াগি (সুপরিচিত নয়, তবে মূলত অন্যান্য সমস্ত সিস্টেমের মতো একই আইডিয়া))

এটা ভয়াবহ ছিল।

গেমসের মতো রিয়েল-টাইম রেন্ডারিং পরিবেশগুলির জন্য, আমি অনুভব করি যে "বজায় রাখা" জিইউআই সিস্টেমগুলি আরও বেশি অপ্রচলিত। ব্যবহারকারীর ইন্টারফেসগুলি সাধারণত ফ্লাইটে স্বয়ংক্রিয়-লে-আউট করা বা পুনরায় আকারযুক্ত উইন্ডোগুলির প্রয়োজন হয় না। পরিবর্তে, তাদের সর্বদা পরিবর্তনশীল ডেটার (বিশ্বের মডেলগুলির 3 ডি-পজিশনের) সাথে খুব দক্ষতার সাথে ইন্টারঅ্যাক্ট করতে হবে need

কয়েক বছর আগে, আমি "IMGUI" কে হোঁচট খেয়েছি যা মূলত তাৎক্ষণিক গ্রাফিক্স মোডের মতো তবে ব্যবহারকারী ইন্টারফেসের জন্য। আমি খুব বেশি মনোযোগ দিইনি, যেহেতু আমি এখনও অ্যাপ্লিকেশন বিকাশে ছিলাম এবং আইএমজিইউআই দৃশ্যটি নিজেকে প্রকৃতপক্ষে বিস্তৃত বা সাফল্যময় মনে হয়নি। তবুও তারা যে পদ্ধতি গ্রহণ করেছেন তা এটিকে পুরোপুরি সেক্সি এবং মার্জিত বলে মনে হচ্ছে, এটি ইউআইয়ের এই উপায় ব্যবহার করে পরবর্তী প্রকল্পের জন্য আমাকে কিছু লিখতে আগ্রহী করেছে (আমি কর্মে কাউকে বোঝাতে ব্যর্থ হয়েছি: (...)

"বজায় রাখা" এবং "তাত্ক্ষণিক" বলতে আমি কী বোঝাতে চাই তা সংক্ষেপে বলি:

জিইআইআই ধরে রেখেছে: একটি পৃথক আরম্ভের পর্যায়ে আপনি "জিইউআই নিয়ন্ত্রণ" যেমন লেবেল, বাটন, টেক্সটবক্স ইত্যাদি তৈরি করেন এবং এগুলি স্ক্রিনে রাখার কিছু বর্ণনামূলক (বা প্রোগ্রাম্যাটিকাল) উপায় ব্যবহার করেন - কিছুই রেন্ডার হওয়ার আগেই। নিয়ন্ত্রণগুলি X, Y অবস্থান, আকার, সীমানা, শিশু নিয়ন্ত্রণ, লেবেল পাঠ্য, চিত্রগুলি ইত্যাদির মতো মেমরিতে তাদের নিজস্ব বেশিরভাগ রাজ্য ধারণ করে। ইভেন্টের বিষয়ে অবগত হতে এবং জিইউআই নিয়ন্ত্রণে ডেটা আপডেট করতে আপনি কলব্যাক এবং শ্রোতাদের যোগ করতে পারেন।

তাত্ক্ষণিক জিইউআই: জিইউআই লাইব্রেরিতে "রেন্ডারবাটন", "রেন্ডারবেল", "রেন্ডারটেক্সটবক্স" ... ফাংশন (সম্পাদনা: রেন্ডার দ্বারা বিভ্রান্ত হবেন নাউপসর্গ। এই ফাংশনগুলি পোলিং ব্যবহারকারী ইনপুট, অক্ষর সন্নিবেশ করা, ব্যবহারকারীর একটি কী ধরে রাখলে অক্ষর পুনরাবৃত্তির গতি হ্যান্ডেল করে ... যেমন আপনি "তাত্ক্ষণিক" একটি নিয়ন্ত্রণ রেন্ডারে কল করতে পারেন (যেমন না) অবিলম্বে জিপিইউতে লিখতে হবে Usually এটি সাধারণত বর্তমান ফ্রেমের জন্য মনে থাকে এবং পরে এপ্রোপিয়েট ব্যাচে সাজানো থাকে)। গ্রন্থাগার এগুলির জন্য কোনও "রাষ্ট্র" রাখে না। আপনি যদি কোনও বোতামটি আড়াল করতে চান ... কেবল রেন্ডারবাটন ফাংশনটি কল করবেন না। সমস্ত রেন্ডারএক্সএক্সএক্সএক্স ফাংশনগুলিতে বাটন বা চেকবক্সের মতো ব্যবহারকারীর ইন্টারঅ্যাকশন রয়েছে যা রিটার্ন মানগুলি বোঝায় যে ব্যবহারকারী বাটনটিতে ক্লিক করেছেন কিনা whether সুতরাং আপনার "রেন্ডারজিইউআই" আপনার গেমের অবস্থা এবং সমস্ত ডেটা আপডেট লজিক (যখন একটি বোতাম টিপে দেওয়া হয়) প্রবাহের সাথে অন্তর্নিহিত হয়ে ফাংশনটি দেখতে বড় বা অন্য কোনও ফাংশনের মতো দেখায় যেখানে আপনি আপনার রেন্ডারএক্সএক্সএক্সএক্স এক্স ফাংশনগুলিকে কল করেন বা কল করেন না। সমস্ত ডেটা স্টোরেজ গুয়ের বাইরে "বাইরে" থাকে এবং রেন্ডার ফাংশনগুলিতে অন-ডিমান্ড পাস করে। (অবশ্যই, আপনি বড় ফাংশনগুলি কয়েকটিতে বিভক্ত করবেন বা গুইয়ের অংশীকরণের জন্য কিছু শ্রেণীর বিমূর্তি ব্যবহার করবেন 1980 আমরা 1980 এর মতো কোডটি আর লিখি না, তাই না?))

এখন আমি দেখতে পেলাম যে ইউনিটি 3 ডি আসলে তাদের বিল্ট-ইন জিইউআই সিস্টেমগুলিতে খুব একই বেসিক পদ্ধতির ব্যবহার করে। GUI এর একটি দম্পতি সম্ভবত সেখানে এই পদ্ধতির সাথে আছে?

তবুও .. চারপাশে তাকালে, মনে হয় যে জিইআইআই রক্ষণাবেক্ষণের প্রতি শক্তিশালী পক্ষপাত রয়েছে? কমপক্ষে আমি ইউনিটি 3 ডি ব্যতীত এই পদ্ধতির সন্ধান পাইনি এবং আসল আইএমজিইউআই সম্প্রদায়টি বরং .... .. শান্ত বলে মনে হচ্ছে।

সুতরাং কেউ উভয় ধারণা নিয়ে কাজ করেছেন এবং কিছু দৃ strong় মতামত আছে?

সম্পাদনা: আমি বাস্তব-বিশ্বের অভিজ্ঞতা থেকে আসা মতামত সবচেয়ে আগ্রহী। আমি মনে করি তাত্ক্ষণিক জিইউআই পদ্ধতির যে কোনও "তাত্ত্বিক দুর্বলতা" সম্পর্কে আইএমজিইউআই-ফোরামে প্রচুর উত্তপ্ত আলোচনা চলছে, তবে আমি সত্যই বিশ্বের দুর্বলতাগুলি সম্পর্কে জানার জন্য এটি সবসময় আরও আলোকিত মনে করি ।



লিঙ্কের জন্য ধন্যবাদ। আমার ধারণা আপনি কাইলোটনের মন্তব্যটি উল্লেখ করছেন । আকর্ষণীয় ..;)
ইমি

1
হাহ, নীচে উত্তর লেখার মধ্য দিয়ে আমি অর্ধপথে ছিলাম যখন আমি দেখলাম যে আমার মতামত ইতিমধ্যে দেখা গেছে ... তবুও, আমি যাইহোক পোস্ট করব।
কাইলোটান

2
এই প্রশ্নগুলি বন্ধ হয়ে যাওয়া লজ্জাজনক! এই একই ধরণের মতামত যা আমি খুঁজছি যখন আমার একই প্রশ্ন থাকে।
হ্যারাল্ড শাইরিখ

উত্তর:


34

বরং। আমি একটি ভয়াবহ 'রক্ষণাবেক্ষণ মোড' জিইউআই এবং একটি ভয়ঙ্কর 'তাত্ক্ষণিক মোড' জিইউতে গেমদেব কাজটি করেছি এবং যদিও উভয়ই আমাকে চোখ ছুঁড়ে ফেলতে চেয়েছিল, তবে এখনও ধরে রাখা মোডের পদ্ধতিটি আরও ভাল।

তাত্ক্ষণিক মোডের ডাউনসাইডগুলি অনেকগুলি:

  • তারা শিল্পী এবং ডিজাইনারদের লেআউটটি কনফিগার করা সহজ করে না;
  • তারা আপনাকে উপস্থাপনের সাথে যুক্তি মিশ্রিত করে;
  • তারা একক ধারাবাহিক ইনপুট মডেল পাওয়া শক্ত করে;
  • তারা গতিশীল ডেটাগুলির জটিল নিয়ন্ত্রণগুলিকে নিরুৎসাহিত করে (উদাহরণস্বরূপ তালিকার ভিউ);
  • লেয়ারিংটি খুব বিশ্রী হয়ে ওঠে (উদাঃ আমি যদি রেন্ডারকমবক্সকে কল করি তবে ড্রপ-ডাউন বাক্সটি সম্ভবত রেন্ডার করতে পারে না কারণ এটি উইন্ডোর বাকী অংশের উপরে যেতে হবে - সরঞ্জাম-টিপসের জন্য একই) l
  • রেন্ডারিং শৈলীর কনফিগারেশনটি গ্লোবাল (আইক) বা অতিরিক্ত ফাংশন আর্গুমেন্ট (আইক) দিয়ে শেষ হয়;
  • পারফরম্যান্স দুর্বল হতে পারে কারণ মেমরি ম্যানেজারকে জোর দিয়ে, এই সমস্ত ফাংশনগুলিকে কল করার মানগুলিকে জিজ্ঞাসা করতে কল করা বা পরিবর্তিত হতে পারে না এমন অনেকগুলি ছোট ছোট বস্তু তৈরি করার ঝোঁক রয়েছে;
  • ... এবং আমি কল্পনাও করতে পারি না যে কাউকে জিইউআইয়ের চারপাশে বিটগুলি টেনে এনে পুনরায় অর্ডার দেওয়ার অনুমতি দেওয়া কত কষ্টকর হবে। আপনাকে কোনও ডেটা কাঠামো বজায় রাখতে হবে যেখানে আপনাকে সবকিছু রেন্ডার করতে হবে - যা অনেকটা রক্ষণাবেক্ষণ মোড সিস্টেমটিকে আবার লেখার মতো।

তাত্ক্ষণিক মোড জিইউআইগুলি একক প্রোগ্রামারদের জন্য প্ররোচিত করছে যারা দ্রুত এইচইউডি সিস্টেম চায় এবং সেই উদ্দেশ্যে তারা দুর্দান্ত। অন্য কিছুর জন্য ... শুধু না বলুন।


1
@ ইমানুয়েলস্চলজ: আপনি কি ভেবে দেখেছেন যে বজায় রাখা জিইআইআই আসলে "কুৎসিত" নয়?
নিকল বোলাস

1
জিইউআই লাইব্রেরিগুলি অকেজো হতে থাকে কারণ তারা বেশ কয়েকটি উদ্বেগের সমাধান করে - ইনপুট, উপস্থাপনা এবং ডেটা অ্যাক্সেস - এবং এগুলির প্রতিটি প্রোগ্রামের বাকী অংশগুলির দ্বারা খুব বেশি প্রভাবিত হয়। এর অর্থ এই যে আরও জটিল ব্যবহারের ব্যয়ে জিইউআইকে বিভিন্ন প্রোগ্রাম, ইনপুট ডিভাইস এবং রেন্ডারারগুলিতে পুনরায় ব্যবহারযোগ্য করে তুলতে লোকেরা বিমূর্ত স্তরগুলি যুক্ত করে।
কাইলোটান

2
এটি যুক্ত করুন যে কীভাবে রেন্টেড মোড জিইউআই (এমভিসি, এমভিপি, এবং এমভিভিএম 3 জনপ্রিয় পন্থা) কীভাবে তৈরি করা যায় বা কীভাবে এটি আউট করা যায় (ডেটা থেকে? কোড থেকে?) অথবা কীভাবে ইনপুট আচরণ সংযুক্ত করতে হয় সে সম্পর্কে conক্যমত্য নেই fact ওয়েবের মতোই ইনলাইন স্ক্রিপ্ট? নামযুক্ত সংকেত / স্লট? আইএমজিইউআই-র মতো জায়গাগুলির ফলাফল?) এবং মানককরণের এই অভাব জিইউআইয়ের জন্য ওয়ান ট্রু ওয়েয়ের বিকাশকে বাধা দিয়েছে।
কাইলোটান

2
কোনও শিল্পীর দ্বারা লেআউটটি কনফিগার করার জন্য আপনি যদি ধরে রাখা বা তাত্ক্ষণিক জিইআইআই ব্যবহার করেন তবে কোনও সম্পাদক প্রয়োজন। এই পয়েন্টটি সম্পূর্ণ অবৈধ। যুক্তি এবং উপস্থাপনা মিশ্রন হ'ল আপনি তাত্ক্ষণিক মোড জিইউআই ব্যবহার করার কারণ, এটি কোনও ত্রুটি নয়, আপনি যা চান, তার চেয়ে বেশি জিইআইআই বজায় রাখা জগাখিচির বিরুদ্ধে। আপনিও এত কিছু বুঝতে পারছেন না। কনফিগারেশনটিতে গ্লোবাল বা অতিরিক্ত আর্গুমেন্টের প্রয়োজন হয় না যদি API ভালভাবে ডিজাইন করা থাকে। আপনার উল্লিখিত প্রতিটি খারাপ দিকগুলি একটি পরিষ্কার বিষয়ে সমাধানযোগ্য। সর্বাধিক গুরুত্বপূর্ণ যদিও, আপনি ফটোশপ নয়, একটি গেম ইউআই লিখছেন।
dreta

3
@ ড্রেটা: শিল্পী কনফিগারেশন সম্পর্কে আমার বক্তব্যটি এমন কিছু বিষয় যা মূলত তার উপরে নিজের রক্ষিত মোড স্তরটি না লিখেই সম্পাদকের মাধ্যমে পরিবর্তন করা সম্পূর্ণ অবাস্তব ( উপাদান)। আইএমজিইউআই খুব সাধারণ এবং তুচ্ছ ভিজ্যুয়ালের জন্য ভাল কাজ করে, আরও কিছু নয়।
কাইলোটন

31

ডেস্কটপে আইএমজিইউআইয়ের সাথে পাঁচ বা ছয় বছরের প্রকৃত অভিজ্ঞতা সম্পন্ন কেউ হিসাবে আমি এটিকে রক্ষা করতে বাধ্য বোধ করি। সমস্ত প্রতিক্রিয়া (এবং নিজেই প্রশ্ন) আইএমজিইউআইয়ের একটি অত্যন্ত সীমাবদ্ধ সংজ্ঞা উপর ভিত্তি করে রয়েছে এবং মনে হচ্ছে অনেকগুলি প্রশ্নবিদ্ধ দাবি করা হচ্ছে।

এর অনেকগুলি এই ধারণা থেকে উদ্ভূত যে কোনও IMGUI গ্রন্থাগার হুডের নীচে কোনও ডেটা ধরে রাখতে পারে না। এটি মোটেও সত্য নয়। একটি পরিশীলিত আইএমজিইউআই লাইব্রেরি আসলে একটি সমতুল্য আরএমজিইউ লাইব্রেরির হিসাবে প্রায় ডেটা ধরে রাখবে। পার্থক্যটি হ'ল একটি আইএমজিইউআই লাইব্রেরি বেশিরভাগ ফলাফলগুলিকে ক্যাশে করে, অন্যদিকে একটি আরএমজিইউ লাইব্রেরি অনুমোদনের স্থিতি বজায় রাখে। আইএমজিইউআইতে অ্যাপ্লিকেশনটি এমন একটি ফাংশন সরবরাহ করে যা বর্তমান মডেলের স্থিতি নেয় এবং সেই রাজ্যের জন্য একটি জিইউআই তৈরি করে। এটি জিইউআইয়ের অনুমোদনমূলক সংজ্ঞা। অন-স্ক্রিন জিইউআই সেই ফাংশনের ফলাফলের সাথে মেলে কিনা তা নিশ্চিত করার জন্য লাইব্রেরি দায়বদ্ধ। এর অর্থ এই নয় যে প্রতিটি ফর্মটি সম্পূর্ণরূপে মূল্যায়ন করা উচিত এবং জিইউআইকে পুরোপুরি পুনর্নির্মাণ করতে হবে। এটাই ক্যাশিংয়ের বিষয়।

আইএমজিইউআইয়ের এই দৃষ্টিতে আপনি প্রকৃতপক্ষে উন্নত লেআউটটি করতে পারেন এবং কার্য সম্পাদনটি বেশ যুক্তিসঙ্গত। ইন্টারফেসটি আরও সহজ করে তোলে যদি আপনি প্রকৃত অনুমোদনযোগ্য অবস্থাও ধরে রাখতে পারেন। আইএমজিইউআইয়ের মূল বিষয় হ'ল অ্যাপ্লিকেশনটি সমস্ত কিছু ধরে রাখা উচিত নয়। অ্যাপ্লিকেশনটি সম্ভবত প্রতিটি স্ক্রোলবারের অবস্থান এবং প্রতিটি বৃক্ষ নোডের প্রসারিত / ধসে পড়া সঞ্চয় করতে চায় না। পয়েন্টটি হ'ল প্রক্রিয়াগতভাবে tree গাছের নোডের বিষয়বস্তু এবং তাদের খুব অস্তিত্ব নির্দিষ্ট করতে সক্ষম হবেন।

আমি সমস্ত আইএমজিইউআই সমালোচনা পর্যালোচনা করে পর্যায়ক্রমে প্রতিক্রিয়া জানাতাম, তবে আমি সেগুলির অনেক কিছুই বুঝতে পারি না। তাদের বেশিরভাগই কিছুটা মৌলিক বিশ্বাস থেকে এসেছিল বলে মনে হয় যে আইএমজিইউআই হ্যাকিশ এবং আরএমজিইউআই সুগঠিত, যা আমি অনুমান করি উপরের ভুলভ্রান্তি থেকে উদ্ভূত। কোনও অন্তর্নিহিত কারণ নেই যে IMGUI লাইব্রেরিগুলিকে জটিলতার সাথে সমস্যা হওয়া উচিত বা গ্লোবালগুলি দিয়ে লিটার করতে হবে বা উপস্থাপনার সাথে যুক্তি যুক্ত করতে হবে। আমি বলব যে আপনার কন্টেন্টটি শিল্পী চালিত যত বেশি আইএমজিইউআই এর সুবিধাগুলি তত কম গুরুত্বপূর্ণ হয়ে উঠবে তবে আমি নিশ্চিত নই যে শিল্পী-চালিত সামগ্রীর জন্য এটি কেন আরও খারাপ হবে। (আমি ব্যক্তিগতভাবে শিল্পী-চালিত সামগ্রী রঙ, ফন্ট / সীমান্তের আকার ইত্যাদির জন্য স্টাইল শীটগুলি বাদ দিয়ে ব্যবহার করি না, তবে আরএমজিইউআইয়ের চেয়ে এটি প্রয়োগ করা কেন আরও কঠিন হবে তা আমি দেখতে পাই না))

আমার মনে, IMGUI সন্দেহাতীতভাবে একটি ভাল জিনিস। এটি আপনাকে আপনার জিইউআই সম্পর্কে যুক্তির জন্য আরও ভাল মডেল দেয়। এটি অনেক বেশি কার্যকরী এবং প্রতিক্রিয়াশীল হয়ে যায় এবং আপনি যে পরিমাণ পরিবর্তন করতে চান তার পরিমাণ আপনি হ্রাস করেন। অন্যদিকে, একটি পরিশীলিত আইএমজিইউআই লাইব্রেরি বাস্তবায়ন করা বেশ চ্যালেঞ্জ, এবং অবশ্যই একটি সমমানের আরএমজিইউ লাইব্রেরি বাস্তবায়নের চেয়ে আরও কঠিন। এটি গ্রন্থাগারের জটিলতা এবং অ্যাপ্লিকেশন জটিলতার মধ্যে একটি বাণিজ্য। আপনি যদি জটিল অ্যাপ্লিকেশনগুলি (বা এমনকি অনেকগুলি সাধারণ অ্যাপ্লিকেশন) তৈরির পরিকল্পনা করে থাকেন তবে ট্রেড অফ খুব ভাল। আপনি যদি এটি একটি একক অ্যাপ্লিকেশানের জন্য করছেন এবং এটি বেশ সহজ, আপনি সম্ভবত আরএমজিইউআইয়ের সাথে আপনার লক্ষ্যটি দ্রুত অর্জন করতে পারবেন।

যাই হোক, শুভকামনা!


5
"IMGUI লাইব্রেরিগুলির জটিলতার সাথে সমস্যা হওয়া উচিত বা গ্লোবালগুলি ফাঁকা থাকতে হবে বা উপস্থাপনার সাথে যুক্তি যুক্ত করতে হবে এমন কোনও অন্তর্নিহিত কারণ নেই।" সাধারণ আইএমজিইউআই বোতাম কল যেমন, উদাহরণস্বরূপ এটি দেখতে খুব কঠিন। "যদি বাটন (x, y) হয় তবে অ্যাকশন" উপস্থাপনার সাথে যুক্ত মিশ্রণ যুক্তি বলা যায় না। যদি আপনি কলটিতে বিশদ বিবরণ সরবরাহ না করেন তবে আপনি এটিকে অবস্থান বা স্টাইল করতে পারবেন না (বৈশ্বিক বা স্থিতিশীল ব্যতীত) এবং যদি আপনি তাত্ক্ষণিক বোতাম যুক্তি প্রক্রিয়াকরণ না করেন তবে এটি সত্যিই তাত্ক্ষণিক মোড GUI নয়। আপনি ব্যাখ্যা করার জন্য একটি উদাহরণ দিতে পারেন?
কাইলোটান

4
ভাগ করা রাষ্ট্রের পরিমাণের কারণে ওপেনএল প্রসঙ্গটি বাগের একটি বৃহত উত্স, এবং তবুও সেই এপিআই দিয়ে এই পদক্ষেপটি বছরের পর বছর ধরে বজায় রাখা মোডের দিকে চলেছে কারণ তাত্ক্ষণিক মোড উভয়ই নমনীয়তা বা প্রয়োজনীয় কার্যকারিতা সরবরাহ করে না।
কাইলোটান

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

3
কোনও সিএসএস স্টাইলশিট কি "ভাগ করা রাষ্ট্রের একটি বৃহত ব্লক" হিসাবে যোগ্যতা অর্জন করে? যাই হোক না কেন, আমি জানি না আইএমজিইউআইয়ের সাথে আপনার বিশেষ অভিজ্ঞতাটি কী, তবে আপনি যদি আইএমজিইউআই পদ্ধতির বিষয়ে আগ্রহী হন যা এই সমস্যায় ভোগেন না, আমি আপনাকে আমার উত্তরটি উপরের দিকে পড়তে এবং পড়তে উত্সাহিত করব মলি রকেটে আইএমজিইউআই ফোরাম। এটি সত্য যে কোনও নিখুঁত অফ শেল্ফ IMGUI লাইব্রেরি নেই যা আপনি ডাউনলোড করতে এবং কয়েক মিনিটের মধ্যে ব্যবহার শুরু করতে পারেন, তবে আপনি যদি এটি তৈরি করতে আগ্রহী হন তবে তথ্য রয়েছে এবং সহায়তা করতে ইচ্ছুক লোক রয়েছে।
টম

1
সিএসএস স্টাইলশিট স্ট্যাটিক স্টেট; ওপেনজিএল প্রসঙ্গে যা চূড়ান্তভাবে ডায়নামিক থেকে আলাদা!
কাইলোটান

12

জিইউআই লাইব্রেরিতে "রেন্ডারবাটন", "রেন্ডারবেল", "রেন্ডারটেক্সটবক্স" ... এমন ফাংশন রয়েছে যা আপনি "তাত্ক্ষণিক" কন্ট্রোল রেন্ডারে কল করতে পারেন (তাৎক্ষণিকভাবে জিপিইউতে লিখতে হবে না। সাধারণত এটি স্মরণে থাকে বর্তমান ফ্রেমের জন্য এবং পরে এপ্রোপিয়েট ব্যাচে সাজানো হয়েছে)।

আমি এতদূর যেতে পারি যে এটি কোনও জিইউআই লাইব্রেরি গঠন করে না। এটি কেবল রেন্ডারিং ফাংশনগুলির একটি গুচ্ছ।

জিইউআই রেন্ডারিং একটি জিইউআই করার সহজতম অংশ। উদাহরণস্বরূপ একটি পাঠ্য বাক্স নিন। আমি সবচেয়ে সহজতম কেসটি ধরতে চলেছি: একটি সাধারণ একক-লাইন এন্ট্রি পাঠ্য বাক্স।

RenderTextBoxশুধু একটি পাঠ্য বাক্স আঁকতে হবে। এটি কিছু সাধারণ পাঠ্য পরিমাপ করবে এবং স্ক্রিনে গ্লাইফগুলি আঁকবে। এটা হবে না

  • সনাক্ত করুন যে ব্যবহারকারী নিয়ন্ত্রণে মাউস ক্লিক করেছে এবং কার্সারটিকে স্ট্রিংয়ের যথাযথ স্থানে নিয়ে গেছে।
  • ব্যবহারকারী নিয়ন্ত্রণে মাউসকে ডাবল ক্লিক করে পাঠ্যের একটি ব্লক নির্বাচন করুন তা সনাক্ত করুন।
  • সনাক্ত করুন যে ব্যবহারকারী "হোম" কী টিপেছে এবং কার্সারটিকে পাঠ্যের সামনের দিকে নিয়ে যায়।
  • সনাক্ত করুন যে ব্যবহারকারী কোনও বৈধ কী টিপেছে এবং সেই অনুযায়ী স্ট্রিংটি সংশোধন করে। পাঠ্যটি নির্বাচিত হলে নির্বাচিত অংশটি textোকানো পাঠ্যের সাথে প্রতিস্থাপন করা হবে।

আমি চালিয়ে যেতে পারি, তবে আমার ধারণাটি পরিষ্কার clear আপনি যদি RenderTextBoxকোনও পাঠ্য বাক্স আঁকতে ব্যবহার করতে চান তবে আপনি যা পাবেন তা হ'ল স্থির, অ-কার্যকরী পাঠ্য বাক্স। যে কোনও আসল কার্যকারিতা আপনার দ্বারা প্রয়োগ করা আবশ্যক।

পাঠ্য পরিমাপ করছেন এবং গ্লাইফগুলি অঙ্কন করছেন? এটি জিইউআই কাজের সহজ অংশ। জিইউআই এর অর্থ "গ্রাফিকাল ইউজার ইন্টারফেস"। শেষ দুটি শব্দ, যেখানে আপনি ব্যবহারকারীর কাছ থেকে ইনপুট নেন এবং এটি দিয়ে কিছু করেন, এটি শক্ত অংশ।

গেমের খেলোয়াড়েরা জিইউআই নিয়ন্ত্রণগুলি যথাযথভাবে কাজ করবে বলে আশা করে। পিসি শৈলীর পরিবেশে (যেমন: মাউস এবং কীবোর্ড), খেলোয়াড়রা যদি কোনও পাঠ্য বাক্স দেখেন, তবে তারা এটি নিয়মিত পাঠ্য বাক্সের মতো কাজ করার প্রত্যাশা করেন। তারা আশা করে যে এটিতে তীর কীগুলি নিয়ে চলাফেরা করতে পারবে, সামনের দিকে ঝাঁপিয়ে পড়বে এবং বাড়ির সাথে শেষ হবে এবং মুছে ফেলবে, এতে অক্ষর নির্বাচন করবে ইত্যাদি etc.

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

মূলত, আপনি একটি TextBoxWindowক্লাস প্রয়োজন হবে ।

ধরা যাক আপনি একটি গেম বিকল্পগুলির স্ক্রিন প্রয়োগ করছেন। সুতরাং আপনার বিকল্পগুলির বিভিন্ন গোষ্ঠী রয়েছে: গেমপ্লে, গ্রাফিক্স, শব্দ, নিয়ন্ত্রণ ইত্যাদি So তাই আপনার পর্দার বাম দিকে বিভিন্ন গোষ্ঠীর একটি তালিকা রয়েছে। প্রতিটি গোষ্ঠী একটি নিয়ন্ত্রণের সিরিজ নিয়ে আসে যা ব্যবহারকারীর দ্বারা চালিত হতে পারে। ব্যবহারকারী ট্যাব কী টিপলে কী ঘটে?

ঠিক আছে, এটি নিয়ন্ত্রণ কী সক্রিয় তা উপর নির্ভর করে। গোষ্ঠী নিয়ন্ত্রণগুলির মধ্যে একটি যদি সক্রিয় থাকে (সম্প্রতি ক্লিক করা হয়েছিল) তবে এটি পরবর্তী গ্রুপে চলে আসে। পরিবর্তে গোষ্ঠীর মধ্যে থাকা নিয়ন্ত্রণগুলির মধ্যে একটি যদি সক্রিয় থাকে, তবে এটি সেই গোষ্ঠীর পরবর্তী নিয়ন্ত্রণে চলে যায়। সিস্টেমটি এভাবেই কাজ করার উদ্দেশ্যে।

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

এটি আরও বেশি রক্ষণাবেক্ষণ জিইউআইয়ের মতো শোনাচ্ছে, তাই না? পার্থক্যটি হ'ল ... আপনি কঠোর পরিশ্রম করছেন। এলিস জিইউআই কাউকে ব্যবহার করা কম কাজ করার উপায় বলে মনে করা হচ্ছে। তবে জিইউআইয়ের প্রতিক্রিয়ার জন্য যে প্রচেষ্টাটি ব্যবহারকারী প্রত্যাশা করছেন তা তুচ্ছ-তুচ্ছ নয়।

মনে রাখবেন: ইউআইটি আপনার জন্য নয়, এটি আপনার ব্যবহারকারীর জন্য । এটা খেলোয়াড়ের জন্য। তারা যেমনটি প্রত্যাশা করে তেমন আচরণ করা উচিত। এবং যদি এটি না হয়, তবে আপনি ব্যর্থ হয়েছেন।

ব্যবহারকারীর ইন্টারফেসগুলি সাধারণত ফ্লাইটে স্বয়ংক্রিয়-লে-আউট করা বা পুনরায় আকারযুক্ত উইন্ডোগুলির প্রয়োজন হয় না।

এটি একটি সীমাবদ্ধ এবং সীমাবদ্ধ চিন্তাভাবনা।

আমি বিভিন্ন গেমের বিভিন্ন ইউআই চাহিদা থাকা বিভিন্ন গেমগুলির সম্পর্কে স্পিলটি দিতে পারি , কিছু গেমের পুনরায় আকার পরিবর্তনযোগ্য উইন্ডোগুলির প্রয়োজন হয় forth তবে আরও অনেক বড় সমস্যা আছে।

আপনার ধরণের চিন্তাভাবনা গ্রেটুইটাস স্পেস ব্যাটেলস সমস্যার দিকে নিয়ে যায়।

আপনি যদি সেই খেলাটি কখনও খেলেন না তবে এটি একটি সস্তা, ইন্ডি এবং খুব জিইআইআই-ভারী খেলা। আসল গেমপ্লে সমস্ত জিইআইতে সম্পন্ন হয় (এটি একটি "ইউনিট সেটআপ করে এবং তাদের সাথে লড়াই করে" প্রকারের খেলা দেখায়)। সমস্যাটি?

জিইউ পুনর্বিবেচনা করা যাবে না!

ওহ, যদি আপনি একটি সাধারণ মনিটর ব্যবহার করেন বা সাধারণ দৃষ্টিশক্তি থাকেন তবে এটি ঠিক আছে। তবে আপনি যদি আমি হন, উদাহরণস্বরূপ, যিনি একটি হাস্যকরভাবে বিশাল মনিটর চালান (এত বড় যে আপনার উইন্ডোজ সমস্ত পাঠ্যের আকার বাড়িয়েছে যাতে আপনি এটি পড়তে পারেন), এটি ভয়ানক । পাঠ্যটি মাইক্রোস্কোপিক। ফন্টের আকার পরিবর্তন করার কোনও উপায় নেই।

মঞ্জুর, জিএসবি একটি জিইউআই-ভিত্তিক গেম, সুতরাং এটি তাদের পক্ষে একেবারেই অক্ষম। একটি জিইউআই-লাইট গেমটি সম্ভবত এটির সাথে দূরে যেতে পারে।

কখনই ধরে নিবেন না যে আপনার ব্যবহারকারী তাদের খেলাটি ঠিক আপনার মতো দেখছেন । এটি করা বোকামি।

একটি জিইউআই সিস্টেম রয়েছে যা ব্যবহারকারীর রেজোলিউশনে নিজেকে পুনরুদ্ধার করতে পারে, সত্যিকার অর্থে রেজোলিউশন-ইন্ডিপেন্ডেন্ট জিইউআই, জিইউআই সিস্টেমেরই অংশ হতে লেআউট প্রয়োজন requires আপনি যদি এটি সরবরাহ করতে যাচ্ছেন না, তবে আপনার পাঠ্যটি কারও দৈত্য মনিটরে ক্ষুদ্র প্রদর্শিত হবে। এই না একটা ভাল জিনিস।

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

সিস্টেমে ডেটা পাওয়ার জন্য আপনার যে বয়লারপ্ল্যাট কাজটি করা দরকার তা হ'ল ব্যবহারকারীরা নিয়ন্ত্রণের সাথে সঠিকভাবে যোগাযোগ করতে পারে এবং প্লেয়ারের প্রয়োজনীয়তার সাথে এটি নিজের আকার পরিবর্তন করতে পারে তার যুক্তিসঙ্গত নিশ্চয়তা পাওয়ার পরে তার একটি ছোট দাম দিতে হবে।

আপনি যদি প্লেয়ারের কাছ থেকে খুব বেশি ব্যবহারকারী ইনপুট না নেন তবে আপনি তাত্ক্ষণিক মোড জিইউআই দিয়ে পালাতে সক্ষম হতে পারেন। কিন্তু এটি সম্পর্কে হতে হবে।


5
দয়া করে এটিকে ভুল উপায়ে গ্রহণ করবেন না, তবে আমি আবার জিজ্ঞাসা করতে পারি যে আপনি গেম বিকাশের ক্ষেত্রে তাত্ক্ষণিক জিইউআই পদ্ধতির ব্যবহার করে বাস্তব-বিশ্বের অভিজ্ঞতা থেকে কথা বলছেন কিনা (এবং আমি যেমন আপনার মতামতটি পড়েছি: সম্ভবত এটির বদলে উন্নয়নের অর্ধেক পথ পরিবর্তন করে হতাশার;))? উপায় দ্বারা: আপনার পাঠ্যবাক্সের চিত্রিত কার্যকারিতাটি রেন্ডারটেক্সটবক্স শ্রেণিতে প্রয়োগ করা যেতে পারে (এবং যেমন, ইউনিটিগুই.টেক্সটফিল্ডে) implemented এছাড়াও, অবিলম্বে জিইউআই পদ্ধতির কোনও কিছুই লাইব্রেরি ডিজাইনারকে জিপিআইআই নিয়ন্ত্রণের জন্য ক্লাস ব্যবহার করতে নিষেধ করে, যদি এটি অনুমোদন করে। কেবল ব্যবহারটি মৌলিক আলাদা হবে।
ইমি

1
@ ইমমানুয়েল: "উপায় দ্বারা: আপনার পাঠ্যবাক্সের চিত্রিত কার্যকারিতাটি রেন্ডারটেক্সটবক্স শ্রেণিতে প্রয়োগ করা হতে পারে (এবং যেমন, ইউনিটিগুই.টেক্সটফিল্ডে)"। আপনি বলেছিলেন যে RenderTextBoxএটি একটি ফাংশন ছিল , ক্লাস নয়। সুতরাং "তাত্ক্ষণিক মোড" এবং "ধরে রাখা মোড" এর মধ্যে আপনার বিভাজনটি মনে হয় যে ডেটা সংরক্ষণ করা হয়েছে তার আশেপাশে রয়েছে, কে এটি পরিচালনা করছে না। যদি তা হয় তবে আপনার প্রশ্নে আপনাকে এই পার্থক্য আরও স্পষ্ট করা দরকার, কারণ এটি প্রস্তাব দেয় যে "তাত্ক্ষণিক মোড জিইউআই" কেবল পর্দায় স্টাফ আঁকবে। যে এটি ইনপুট পেতে পারে না (কারণ এটির জন্য স্থির রাষ্ট্রের প্রয়োজন হবে) এবং এই জাতীয়। তাহলে এটি কোনটি?
নিকল বোলাস

1
@ ইমানুয়েলসচলজ: "আমি এই" জেনারেল "অবিলম্বে জিইআইআই পদ্ধতির" বিরুদ্ধে একটি যুক্তি দেখতে ব্যর্থ হয়েছি আমি ভেবেছিলাম আমি এটি বেশ ভালভাবে ব্যাখ্যা করেছি: কাউকে কোড লিখতে হবে । কারও কাছে ইনপুট পেতে হবে, কার্সারটি কাছাকাছি স্থানান্তর করতে হবে, একটি বর্তমান নিয়ন্ত্রণ পরিচালনা করতে হবে, লেআউটটিকে পরিচালনা করতে হবে ইত্যাদি। "তাত্ক্ষণিক মোড জিইউআই" এর আপনার বিবরণটি সব হারিয়ে ফেলে এবং এগুলি সব কিছুর জন্য সবচেয়ে সরল আউটপুট-ভিত্তিক সংরক্ষণ করা গুরুত্বপূর্ণ গুই। সুতরাং আমি আপনার যুক্তিটি দেখতে ব্যর্থ হয়েছি যে "তাত্ক্ষণিক জিইউআই পদ্ধতির" যা কিছু আছে তা আপসাইড রয়েছে
নিকল বোলাস

1
দুঃখিত, আমার দোষ "... রেন্ডারটেক্সটবক্স ফাংশনের মধ্যে প্রয়োগ করা হয়েছে" (শ্রেণি নয়)। এটা তোলে হয় একটি ফাংশন এবং না প্রক্রিয়া ব্যবহারকারীর ইনপুট ও লাইব্রেরি রাখা না কিছু রাষ্ট্র (বর্তমান ফোকাস করা নিয়ন্ত্রণ করা)। দয়া করে, কোনও অপরাধের উদ্দেশ্যে নয়, তবে আমি কি ধরে নিতে পারি যে আপনি এখানে আমার পোস্টিং থেকে কেবল "তাত্ক্ষণিক জিইআইআই" জানেন এবং আপনি আইএমজিইউআই বা ইউনিটি 3 ডি গুইয়ের দিকেও তাকােন নি? একটি "তাত্ক্ষণিক জিইআইআই" এখানে বিশদে কী আছে তা আমি অবশ্যই বোধগম্য ছিলাম না, আমি কেবল সংক্ষেপে বলতে চেয়েছিলাম যাতে আমরা মোট বিভিন্ন বিষয় নিয়ে কথা বলি না (যেমন "তাত্ক্ষণিক গ্রাফিক মোড" দিয়ে বিভ্রান্ত না হয়ে)।
ইমি

2
@ ইমানুয়েলস্চলজ: "একটি" তাত্ক্ষণিক জিইআইআই "এখানে বিশদে কী আছে তার বর্ণনা আমি অবশ্যই বোধগম্য ছিলাম না" তবে আপনার প্রশ্নটি অসম্পূর্ণ। প্রকৃতপক্ষে, এটি বরং বিভ্রান্তিকর, কারণ "তাত্ক্ষণিক মোড" রাষ্ট্রের অভাবকে বোঝায়। "বজায় রাখা" শব্দটি এর রাজ্যটি থেকে আসে। সুতরাং যদি কোনও "তাত্ক্ষণিক মোড জিইউআই" স্থিতি ধরে রাখে ... এটি তাত্ক্ষণিক মোড নয়।
নিকোল বোলাস

8

একটি সময় আগে IMGUIs এছাড়াও আমার আগ্রহ ধরে একটি পরীক্ষা হিসাবে আমি টিউটোরিয়াল দুয়েক প্রণালীর সাথে নিজেকে পরিচিত করার লিখেছেনঃ (শুরু এখানে যদি তুমি আগ্রহী, কিন্তু এটা অনেক বেশি সি # / XNA + + মূল চেয়ে নয় 'টিউটোরিয়াল' এখানে ) ।

আমি খুব অল্প সময়ের জন্য আইএমজিইউআই পছন্দ করেছি কারণ তারা প্রদর্শিত তথ্য সর্বদা যুগোপযোগী এবং সঠিক (যেহেতু এমন কোনও রাজ্য নেই যা আপনি সবসময় প্রকৃত ডেটাতে খাওয়ান)। তবে শেষ পর্যন্ত আমি আগ্রহ হারিয়ে ফেলেছি তাই এখন আমি আবারও জিইআইআই ব্যবহার করি।

শেষ পর্যন্ত আমি ভেবেছিলাম যে জিইউআইয়ের তাত্ক্ষণিকতা জিইউআইটিকে ডেটা থেকে পৃথক করা আরও শক্ত করে তুলেছে এবং অনেক সময় আইএমজিইউআইয়ের কমনীয়তা ভেঙে কিছু স্টেট প্রবর্তন করে বিষয়গুলিকে আরও ডিক্লুপ করার চেষ্টা করেছি। আমি এটাও মনে করি না যে আইএমজিইউআইদের জন্য কোড লেখার চেয়ে রক্ষিত জিইউআইগুলির জন্য লিখনের কোডটি বেশি কাজ এবং আমি পছন্দ করি যে বজায় রাখা জিইউআই গুলি বরখাস্ত করা যায় এবং ভুলে যেতে পারে এবং আমি ঘটনা সত্যই পছন্দ করি :)।

যাইহোক, যখনই কেউ আমার অভ্যন্তরে আইএমজিইআইআই-এর উল্লেখ করেছে আবার চেষ্টা করতে চায় এবং এটি সঠিকভাবে অর্জন করার জন্য আরও চেষ্টা করে, কারণ সেখানে সত্যিই কিছু কমনীয়তা রয়েছে, আমি কেবল 100% নিশ্চিত নই যে এটি আপনার কাজটি সবসময় সহজ করে দেবে কিনা। আমি বলবো এটি চেষ্টা করে দেখুন, সম্ভবত আমি যেমন চেষ্টা করেছি তেমন চেষ্টা করেছিলাম এবং কয়েকটি টিউটোরিয়াল লিখছি (আমি নতুন কৌশলগুলি শেখার সর্বোত্তম উপায়টি অন্যদের কাছে ব্যাখ্যা করার মাধ্যমে পেয়েছি)।


8

আমি ইউনিটি 3 ডি জিইউআই সিস্টেমের সাথে অনেক কাজ করেছি, যা আপনার বর্ণনার মতো কাজ করে। এবং আমাকে অবশ্যই বলতে হবে, আমি এটি একটি আবেগ দিয়ে ঘৃণা করি।

"তাত্ক্ষণিক" পদ্ধতির কিছু ক্ষেত্রে সত্যিই ভাল কাজ করে। প্রথমত, যখন আপনার কেবল কয়েকটি বোতাম এবং লেবেল দরকার হয় - উদাহরণস্বরূপ শ্যুটার এইচডি মনে করুন। "বজায় রাখা" পদ্ধতির সাথে এগুলি তৈরি করা খুব কঠিন নয়, তবে ইউনিটিজিইউআইয়ের সাথে এটি অত্যন্ত সহজ। দ্বিতীয় ক্ষেত্রেটি হ'ল যখন আপনাকে পর্দায় প্রচুর নিয়ন্ত্রণ সরবরাহ করতে হবে তবে লেআউটটির বিষয়ে সত্যই যত্ন নেই। বিশেষত যখন সঠিক নিয়ন্ত্রণগুলি কেবল রানটাইমের সময় হয়। এটি আসলে কোনও খেলায় কার্যকর নয় তবে ইউনিটি সম্পাদকের অভ্যন্তরে চলমান সরঞ্জামগুলি তৈরি করার সময় সত্যই সহায়ক।

তবে, কোনও অর্ধ-জটিল জিইউআই - একটি (এমএমও) আরপিজি বা কৌশলগত গেমের জন্য, উদাহরণস্বরূপ - অনিবার্যভাবে অনিবার্য কোডের এক ভয়াবহ জগতে রূপান্তরিত করে, বিশেষ ক্ষেত্রে পূর্ণ এবং বহু সংখ্যক উপায়ে ভঙ্গ। যেমন একটি জিইউআই তৈরি করার সময়, আপনার সাধারণত বেশ নির্দিষ্ট নির্দিষ্ট লেআউট থাকে যা অবশ্যই কোনও রেজোলিউশনের জন্য কাজ করে এবং আপনি যে কোনও ডেটা প্রেরণ করেন তা প্রদর্শন করতে সক্ষম হন। আপনার যেমন জিনিস প্রয়োজন যেমন উদাহরণস্বরূপ, দীর্ঘ পাঠ্যের জন্য পথ তৈরি করতে কিছু বোতাম নীচে সরিয়ে নেওয়া উচিত। "বজায় রাখা" জিইউআই সহ আপনার একটি নিয়ন্ত্রণ থাকতে পারে যা স্বয়ংক্রিয়ভাবে তা করে। "তাত্ক্ষণিক" মোডের সাথে, কোনও নিয়ন্ত্রণ নেই, সুতরাং আপনাকে স্পষ্টভাবে সবকিছু করতে হবে।

ইউনিটিজিইউআইয়ের সাথে আরেকটি সমস্যা (এটি সমস্ত তাত্ক্ষণিক মোড জিইআইআই-তে ঘটে কিনা তা নিশ্চিত নয়) উদাহরণস্বরূপ, কোনও Button()কল অন্য কোনও জিইউআই কল বিবেচনা না করেই কাজ করে। সুতরাং, যদি একটি বোতাম অন্যটির উপরে থাকে তবে একটি ক্লিক একই সাথে উভয় বোতাম টিপবে press এটি অবশ্যই ব্যবহারকারী প্রত্যাশা করে না, তাই এটি হ্যান্ডেল করতে আরও একটি বিশেষ কেস যুক্ত করে।

এই সমস্ত কিছু নিয়ে বেঁচে থাকার জন্য, আমি সর্বদা ইউনিটিজিইউআই-এর আশেপাশে আমার নিজের মোড়ক লিখেছি যা এটিকে "ধরে রাখা" মোড সিস্টেমে রূপান্তরিত করে: এটি তাদের নিজস্ব রাজ্য সংরক্ষণ GUIকরে এবং আমার জন্য প্রতিটি ফ্রেমকে প্রয়োজনীয় ফাংশনগুলি কল করে।

আমি বলতে পারি না যে "তাত্ক্ষণিক" মোড অবশ্যই "ধরে রাখা" এর চেয়ে খারাপ, তবে আমি অবশ্যই "রক্ষণাবেক্ষণ" মোডে আরও অনেক ভাল কাজ করা অনুভব করি।


1
হ্যাঁ, আমি problemsক্য জিইউআইয়ের সাথে এই সমস্ত সমস্যাগুলির অভিজ্ঞতা পেয়েছি এবং ফলস্বরূপ এটি ঘৃণা করছি। এটি দ্রুত স্ট্যাটিক এইচডি জন্য দুর্দান্ত তবে অন্য যে কোনও কিছুর জন্য বাস্তব ঝামেলা real
কাইলোটান

6

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

  • স্কিমা থেকে জিইউআই লোড হচ্ছে

সম্ভবত প্রথমে মনে হচ্ছে আইএমজিইউআইয়ের সাথে শিল্পীদের খুব একটা নমনীয়তা নেই, এটি একটি এক্সএমএল বা জেএসএন স্কিমা থেকে জিইউআই লেআউট লোড করে সমাধান করা বা উন্নত করা হয়েছে।

  • মেনু স্তর কল কল

এই সমস্যাটি বাছাইয়ের মাধ্যমে সমাধান করা হয়, আপনার ইউআই ম্যানেজার ক্লাস তৈরি করা উচিত যা ড্রয়ের ক্রম বাছাই করে, আমি সি # এক্সএনএতে এই সমস্যাটি মুভিয়েবল, ক্লিক-সক্ষম প্যানেলগুলির সাথে একে অপরের শীর্ষে আঁকানো সমাধান করেছি। যদি জিজ্ঞাসা করা হয় তবে আমি সিউডো কোড পোস্ট করতে পারি।

  • তালিকা বাক্স

আপনি একটি অ্যারে থেকে স্ট্রিং আঁকতে পারেন? এই স্ট্রিংগুলির ফন্টগুলির উচ্চতা এবং প্রস্থ থেকে আপনি আয়তক্ষেত্র অঞ্চলগুলি সংজ্ঞায়িত করতে পারেন? একসাথে যুক্ত হওয়া সমস্ত আয়তক্ষেত্রগুলির উচ্চতা দ্বারা আপনি কী আপনার স্ক্রোল বোতামের আকারের একটি অনুপাত তৈরি করতে পারেন? তারপরে আপনি উপরে বা নীচে সরানোর জন্য স্ক্রোলযোগ্য বোতামের সাথে একটি তালিকা বাক্স তৈরি করতে অর্ধেক হয়ে আছেন। আমি ভেবেছিলাম এটি কঠিন হতে চলেছে, তবে এটি আমার ধারণা থেকে অনেক সহজ হতে পারে। কোনও বাফার নেই, কোনও রাজ্য নেই, কোনও কলব্যাক জড়িত নেই।

  • জিইউআই থেকে ডেটা পৃথক করছে

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

  • এসডিকে থেকে জিইউআই

এটি আপনার নয়, এসডিকে কোডের সীমা এবং কার্যকারিতা। আমি দেখতে পেয়েছি যে এসডিকে ইউআই (হাতুড়ি, ityক্য, ইউডিকে) যাইহোক, শেখার জন্য প্রায় নতুন ভাষা। বাস্তবে এগুলি আমার মতো উইন্ডোজ Forফর্মের মতো, উভয়ই বিস্তৃত সম্ভাবনার জন্য সেট আপ করা হয়েছে এবং এর জন্য জটিলতায় কিছুটা অতিরিক্ত ওজন রয়েছে।

এবং সর্বশেষে এটি> http://mollyrocket.com/861 দেখুন


4

ব্যবহারকারীর ইন্টারফেসগুলি সাধারণত ফ্লাইটে স্বয়ংক্রিয়-লে-আউট করা বা পুনরায় আকারযুক্ত উইন্ডোগুলির প্রয়োজন হয় না। পরিবর্তে, তাদের সর্বদা পরিবর্তনশীল ডেটার (বিশ্বের মডেলগুলির 3 ডি-পজিশনের) সাথে খুব দক্ষতার সাথে ইন্টারঅ্যাক্ট করতে হবে need

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

আমি অবিলম্বে জিইআইআই দিয়ে এন 'ড্রপকে টেনে আনার এমন কোন উপায়ের কথা ভাবতে পারি না যা অজানাভাবে জেফ বাফার পরিবর্তন করা এবং কোনও তথ্য সরিয়ে দেওয়ার জন্য ঘটে যাওয়া একটি ক্লিক বাতিল করার জন্য সময় তথ্য সংরক্ষণ করে যেমন জাজ বাফারকে অস্থায়ীভাবে বদলে যায় এবং সময় তথ্য সংরক্ষণ করে না বিট.

তবে ডিজাইনের দৃষ্টিকোণ থেকে আমার জিইউআই ইভেন্টগুলি ছাড়াই একটি বিশ্ব কল্পনা করতে আমার সমস্যা হচ্ছে। এছাড়াও একটি তাত্ক্ষণিক জিইউআইও ওওপি-র সাথে সামঞ্জস্যপূর্ণ নয় যা আপনাকে প্রক্রিয়াজাতীয় প্রোগ্রামিংয়ের আশ্রয় নিতে বাধ্য করে।

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


1
আমি আপনাকে জিজ্ঞাসা করতে চাই: আপনার মতামতটি কি আসল-বাস্তব অভিজ্ঞতা থেকে আসে বা উভয় সিস্টেমকে দেখে তাত্ত্বিক চিন্তা থেকে আসে? উহম .. এটি উদ্দেশ্য থেকে আরও কঠোর মনে হচ্ছে, দুঃখিত .. আমি যা বলতে চাইছি তা হল: আমি আপনার মতামত এবং মূল্যায়ন একটি তাত্ত্বিক দিক থেকে ভাগ করি । আইএমজিইউআই-এর মতো সিস্টেমগুলি সম্ভবত কম ওওপিশ কোডের দিকে পরিচালিত করে (যদি এটি উদ্বেগজনক হয়) তবে তাদের নিয়ন্ত্রণে সমস্যা রয়েছে যার জন্য কিছু স্টেটের প্রয়োজন হয় ইত্যাদি। এর ঠিক ... সাধারণ জিইউআই সিস্টেমগুলি নিজেরাই ইতিমধ্যে খুব বড় এবং জটিল, তাই আপনি যতক্ষণ না এই সিস্টেমগুলির কাছাকাছি আসেন ততক্ষণ আপনার যুক্ত করার অনেক জটিলতা আছে ..
ইমি

1
ইমানুয়েল, অনেক গেমের জন্য অটো-লেআউট এবং আকার পরিবর্তনযোগ্য উইন্ডোগুলির প্রয়োজন তা জানতে আপনার বাস্তব-বিশ্ব বিকাশের অভিজ্ঞতা থাকতে হবে না।
কাইলোটান

1
@ ইমানুয়েল শোলজ আমি স্বীকার করি যে ধরে রাখা ইউআই নিয়ে আমার আরও অনেক অভিজ্ঞতা আছে; ওএসএস প্রকল্প হিসাবে একটি রক্ষণাবেক্ষণ করা এবং তাদের সাথে কাজ করা যদিও আমার ক্যারিয়ার (যা স্বীকারযোগ্যভাবে খুব কম বয়সী)। তবে আমি ইউএনটি 3 ডি এর ইউআই সিস্টেম ব্যবহার করেছি এবং যখন আমি এক্সএনএ-তে স্থানান্তরিত করেছি তখন এটির সদৃশ করেছি। আমার রক্ষিত ইউআই বিকাশ করা হয়েছিল কারণ ইউনিফর্মের কার্যকারিতা অর্জনের জন্য প্রকল্প থেকে প্রকল্পে একই হ্যাকটি অনুলিপি করার জন্য আমি ক্লান্ত হয়ে পড়েছিলাম।
ক্লাসিকথান্ডার

@ কাইলোটান "রিজেজেবল উইন্ডোজ" দ্বারা আমার অর্থ হ'ল আপনি সক্রিয়ভাবে ইউআই উপাদানগুলিকে টেনে আনার মাধ্যমে (বা অন্য উপায়ে) এবং স্বয়ংক্রিয় বিন্যাস দ্বারা করতে পারেন যে যখন আপনি তাদের আকার পরিবর্তন করেন, ইউআই একটি "সুন্দর" উপায়ে অ্যাডাপ্ট করে যেমন স্ক্রোল বারগুলি প্রদর্শন করে, একাধিক বরাদ্দ করে বোতাম বার এবং অন্যান্য জন্য লাইন। হ্যাঁ, কখনও কখনও আমি এটি গেমগুলিতে দেখি তবে ডেস্কটপ অ্যাপ্লিকেশনগুলিতে এটি অনেক বেশি সাধারণ। পাশাপাশি, আমি মনে করি ভাল রাইজেবল ইউআই তৈরি করা জিইআইআই রক্ষণাবেক্ষণের পক্ষে সহজ জিনিস নয়।
ইমি

1
আকার পরিবর্তনযোগ্য উইন্ডোজ এবং অটোলেআউট অনেকটা একই জিনিস। ধরে রাখা মোডে জিইউআইগুলিতে প্রতিটি নিয়ন্ত্রণ তার আকার জানতে পারে (এটি রুটিনে পরিবর্তিত হয় বা না) এবং অটোলেআউট মূলত একটি পুনরাবৃত্ত আকারের চেক। যুক্তিযুক্তভাবে ডেস্কটপ অ্যাপ্লিকেশনগুলির চেয়ে গেমগুলিতে এটি আরও বেশি গুরুত্বপূর্ণ কারণ আমরা বিভিন্ন দিক অনুপাত এবং বিভিন্ন প্ল্যাটফর্মগুলিতে পূর্ণ স্ক্রিনের জিইউআই প্রত্যাশা করি।
কাইলোটান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.