ইউনিটির পরিদর্শকের কী-মান জোড়া (অভিধানের মতো) কীভাবে সম্পাদনা করবেন?


18

আমার তৈরি একটি বানান ব্যবস্থা রয়েছে, নীতির নীচে রয়েছে:

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

আমি কীভাবে বাস্তবায়নের চেষ্টা করছি সমস্যাগুলি হ'ল:

  • প্রতিটি অভিনেতার অ্যানিমেশন তালিকা করার জন্য আমি একটি ব্যবহার করতে পারি Dictionary<Spell, Animation>, তবে পরিদর্শক দ্বারা অভিধানগুলি সমর্থিত নয় যা একাধিক অভিনেতার প্রকারটি সহজেই সম্পাদনা করা শক্ত করে তোলে।
  • সংশ্লিষ্ট এনাম থেকে সহজেই একটি বানান প্রিফ্যাব অ্যাক্সেস করার জন্য আমার কিছু উপায় প্রয়োজন। এখানেও আমি একটি অভিধান ব্যবহার করতে পারি তবে আমি কেবল পরিদর্শকের প্রিফ্যাবগুলিতে উল্লেখ করতে পারি, কোডে নয়, মানে আমি এই অভিধানটি পূরণ করতে সক্ষম হব না

আমি আমার বানান এনামগুলিকে সহজেই সম্পর্কিত প্রিফাব এবং অ্যানিমেশনগুলির সাথে সংযুক্ত করার জন্য একটি উপায় খুঁজছি


1
আমি কি এই প্রশ্নের শিরোনামটি পরিবর্তনের পরামর্শ দিতে পারি Unক্যের পরিদর্শকটিতে অভিধানের মতো আচরণ (কী-মান জোড়গুলির ম্যাপিং) পাওয়া? এই প্রশ্নটি অন্যান্য ব্যবহারকারীদের যারা এই ধরণের সমস্যা সমাধানের জন্য ধারণা পেয়েছেন বা সন্ধান করছেন তাদের সন্ধান করা সহজ করতে সহায়তা করবে will যদিও এই নির্দিষ্ট কেসটি মন্ত্র সম্পর্কিত, একই কৌশলগুলি আরও বিস্তৃতভাবে প্রযোজ্য।
ডিএমগ্রিগরি

@ ডিএম আমি ityক্য জানি না, তবে আপনার সাধারণ যুক্তি বোধগম্য মনে হচ্ছে। সাহসী হয়ে সম্পাদনা করুন; রোলব্যাক সস্তা।
আনকো 3'14

উত্তর:


24

ইউনিটির ইন্সপেক্টরতে মূল-মান জোড়া পাওয়ার একটি দ্রুত উপায় হ'ল সিরিয়ালিজেবল এন্ট্রি ক্লাসটি সংজ্ঞায়িত করা এবং তারপরে একটি অ্যারে বা তালিকা <> ব্যবহার করুন। যেমন ...

public class SpellAnimationMap : ScriptableObject
{
   [System.Serializable]
   public class SpellAnimationEntry
   {
       public Spell spell;
       public AnimationClip animation;
   }

   public SpellAnimationEntry[] spellAnimations;    
}

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

ফলাফলটি এরকম দেখাচ্ছে:

স্বয়ং-উত্পাদিত পরিদর্শক

(একটি কৌশল: সিরিয়ালযুক্ত এন্ট্রি ক্লাসে যদি "নাম" ক্ষেত্র থাকে তবে সেই স্ট্রিংটি "এলিমেন্ট 0" শিরোনামের পরিবর্তে প্রদর্শিত হবে you যদি আপনার আরও জটিল ডেটা থাকে তবে দক্ষতার সাথে নেভিগেট করতে সক্ষম হতে চাইলে দরকারী))

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


সম্পাদনা করুন: এখন এটি আরও সহজ - আপনি কেবলমাত্র আপনার স্ক্রিপ্টযোগ্যঅবজেক্টের উপরে এই বৈশিষ্ট্যটি যুক্ত করতে পারেন :

[CreateAssetMenu(fileName = "fileName.asset", menuName = "Some Folder/Menu Label")]

এটি স্ক্র্যাপটেবল অবজেক্টটিকে আপনার তৈরি মেনুতে রাখে, যেমন: Screenক্যে একটি কাস্টমাইজড তৈরি মেনু দেখাচ্ছে স্ক্রিনশট


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

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

অভিধান <,> ক্ষেত্রগুলি সরাসরি পপুলেট করার জন্য কাস্টম ইন্সপেক্টরদের লেখাও সম্ভব, তবে আমি যে ধারণাটি পাই তা হ'ল সহজে কাজ করা তত্পর।


উত্তরের অপেক্ষার সময় ঠিক আমার কী হয়েছিল তাই আমি এটিকে গ্রহণ করব
ম্যালহারক

0

@DMGregory দ্বারা সরবরাহিত ব্যাখ্যা পড়ুন

যারা উদাহরণ পছন্দ করেন তাদের কাছে:

public class SpellHandler : ScriptableObject
{
    public Spell[] keys;
    public Animation[] values;

    private Dictionary<Spell, Animation> dic;

    void Awake()
    {
        int length = keys.Length;
        this.dic= new Dictionary<Spell, Animation>(length);
        for (int i = 0; i < length; i++)
        {
            this.dic.Add(keys[i], values[i]);
        } 
    }    
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.