Ityক্য আপডেট পদ্ধতিটি পেতে প্রতিবিম্বটি কেন ব্যবহার করে?


12

কেন অ্যাক্সেস করার জন্য ঐক্য ব্যবহার প্রতিফলন করে MonoBehaviourমত বার্তা পদ্ধতি Awake, Update, Start, ...?

প্রতিবিম্বটি ব্যবহার করা কি ধীর হবে না? এটি অন্যান্য পদ্ধতির মতো ব্যবহার করে না কেন Template Method? এটি কেবল MonoBehaviourবেস ক্লাসে পদ্ধতিগুলি বিমূর্ত হিসাবে সংজ্ঞায়িত করতে পারে এবং উপশ্রেণীগুলিকে এটি প্রয়োগ করতে বাধ্য করতে পারে।

উত্তর:


20

এটা হয় না

কিভাবে আপডেট বলা হয়

না, ইউনিটি সিস্টেম ব্যবহার করে না। প্রতিবার কল করার প্রয়োজন হলে যাদু পদ্ধতিটি আবিষ্কার করার জন্য প্রতিচ্ছবি নির্বাচন করুন।

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

গেমের সময় ইউনিটি কেবল এই তালিকাগুলির মাধ্যমে পুনরাবৃত্তি করে এবং এগুলি থেকে পদ্ধতিগুলি কার্যকর করে - এটি সহজ। এছাড়াও, এ কারণেই আপনার আপডেট পদ্ধতিটি জনসাধারণ বা ব্যক্তিগত it

হিসাবে কারণে এই ভাবে সম্পন্ন করা হয়, আমি তোমাকে (পাঠক) এর মূলত পড়ুন করব DMGregory এর উত্তর , যা দুই প্রতিদ্বন্দ্বী জিনিস ভারসাম্য নিচে boils:

  1. পারফরম্যান্স অপটিমাইজেশন
  2. নতুন বিকাশকারীদের ব্যবহারের সহজতা

একটি নতুন বিকাশকারী কেবল এটি কাজ করতে চায় এবং "কীভাবে এটি ইভেন্ট সিস্টেমে সংযুক্ত করব?" তা খুঁজে বের করতে চাই না তবে এটি এখনও ন্যূনতম ওভারহেড দিয়ে দ্রুত চালানো উচিত।

সমাধানটি সম্ভবত সেরা যে এই দুটি সীমাবদ্ধতার মধ্যেই অর্জন করা যায়। বা কমপক্ষে, সেরা Unক্য দেব দলটি সেই সময়ে সামনে আসতে সক্ষম হয়েছিল। আমরা কখনই জানি না।


2
tl; DR একই প্রক্রিয়া, আলাদা, দ্রুত এপিআই। তবে ওপির জিজ্ঞাসা অনুযায়ী কেন তারা আলাদা পদ্ধতি বেছে নিল না?
আশ্চর্য

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

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

6
এই নকশার জন্য historicতিহাসিক কারণও থাকতে পারে। Scক্যটি তাদের নিজস্ব স্ক্রিপ্টিং ভাষা দিয়ে শুরু হয়েছিল, যা তারা ধীরে ধীরে সি # এর পক্ষে পর্যায়ক্রমে বেরিয়ে এসেছিল। এটি ঠিক স্বাভাবিক যে তারা কিছুটা প্রতারণার উদ্দেশ্যে হলেও একই ধরণগুলি ব্যবহার করতে চেয়েছিল।
ফিলিপ

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

10

এটি কেবল মনো-বেহাইভর বেস ক্লাসে বিমূর্ত হিসাবে পদ্ধতিগুলি সংজ্ঞায়িত করতে পারে এবং সাবক্লাসগুলি এটি প্রয়োগ করতে বাধ্য করতে পারে।

ইউনিটি যে সিস্টেমটি ব্যবহার করে তার সুবিধাগুলির মধ্যে একটি হ'ল আপনাকে প্রতিটি মনোবিহ্যাভিওর বার্তাটি প্রয়োগ করতে হবে না , যার মধ্যে 60 টিরও বেশি রয়েছে

সাধারণত আমাদের কেবল এই পদ্ধতিগুলির একটি বা একটি ছোট মুষ্টি প্রয়োজন। যেহেতু কিছু 2D / 3D পদার্থবিজ্ঞানের সাথে সুনির্দিষ্ট, কিছু ক্যামেরা বা কণা সিস্টেমের জন্য অনন্য, তাই এটির কোনও সম্ভাবনা খুব কম নয়।

আমাদের নিখরচায়িত হিসাবে যে বার্তাগুলির প্রয়োজন নেই, তা রেখে আমরা স্পষ্টভাবে রানটাইমের সংকেত দিতে পারি "এই বিষয়টিতে অনকোলিশনস্টায় 2 ডি কল করাও বিরক্ত করবেন না - আমার এটির দরকার নেই"

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


কেবল একটি প্রশ্ন ... যতদূর আমি জানি (ব্যক্তিগতভাবে নয়), আপনার যদি হাজার হাজার গেমওবজেক্টস থাকে, যার মধ্যে একটি আপডেট পদ্ধতি সহ কোনও স্ক্রিপ্ট ব্যবহার করে, আপনার উল্লেখযোগ্য পারফরম্যান্সের প্রভাব রয়েছে। বিকল্পটি হ'ল ম্যানেজার স্ক্রিপ্টে কেবলমাত্র একটি আপডেট পদ্ধতি সহ তালিকাগুলি ব্যবহার এবং পুনরাবৃত্তি করা , যা সম্ভবত আরও পারফরম্যান্ট বলে মনে হয়। এটা কি এখনও আছে, নাকি ইতিমধ্যে পরিবর্তন হয়েছে? - যদি কিছু না পরিবর্তিত হয় তবে এটি বোঝাতে পারে যে Unক্যের এটি করার উপায় পারফরম্যান্সের তুলনায় সর্বোত্তম কাছাকাছি নয়।
যুদ্ধ

4
@ ব্যাটল আপনি যা বর্ণনা করেছেন তা লন্ডনের সাথে সামঞ্জস্যপূর্ণ যা ড্রাকো 18 টি ২০১৫ সাল থেকে উদ্ধৃত করেছে এবং আমি সন্দেহ করব যে এটি এখনও সত্য। এই হাজার হাজার অবজেক্টের উপর অপরিবর্তিত আপডেট পদ্ধতিটি রেখে যেতে সক্ষম হ'ল এই অপটিমাইজেশনটি কাজ করতে দেয় ise আমি যে উদ্ধৃত প্রশ্নের অংশে বর্ণিত হয়েছে ঠিক তেমন বিস্মৃত বেস ক্লাসের মাধ্যমে যদি প্রতিটি মনোবিহ্যাওরের একটি আপডেট পদ্ধতি সংজ্ঞায়িত করে থাকে তবে আমাদের আপডেট কলগুলি কেবল পরিচালকের তালিকার পুনরাবৃত্তির মধ্যে সীমাবদ্ধ করার ক্ষমতা আমাদের নেই। নোট করুন যে এই প্রশ্নোত্তরটি "ইউনিটির দৃষ্টিভঙ্গি কি সর্বোত্তম?" তবে কেবল কীভাবে বর্তমান পদ্ধতির উপকার হতে পারে।
ডিএমগ্রিগরি

আহ আমি দেখছি, এটি সত্যই উপলব্ধি করে। উত্তর করার জন্য ধন্যবাদ!
যুদ্ধ

@ বাটল এটি এখনও সত্য। যদিও ityক্যটি জিনিসটি বিকল্পগুলির চেয়ে বেশি পারফরম্যান্ট তবে এটি এখনও নিয়মিত ফাংশন কলের চেয়ে বেশি ওভারহেড করে।
ড্রাকো

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