ইউনিটির স্প্ল্যাশ স্ক্রিন চলাকালীন আমি কি নিজস্ব লোডিং স্ক্রিপ্টটি চালাতে পারি?


10

ইউনিটির স্প্ল্যাশ পর্দা উঠার সময় আমি কী পটভূমিতে ডেটা লোড করতে পারি? যদি তাই হয়, কিভাবে?

আমি স্প্ল্যাশ স্ক্রিন চলাকালীন কোড চালানোর চেষ্টা করছি, কেবল সম্পদ লোড করব না।

আমি গুগল বা ityক্য ডকুমেন্টেশনে এ সম্পর্কিত কোনও তথ্য খুঁজে পাচ্ছি না ।


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

2
এটি কিছুটা এক্সওয়াই সমস্যার মতো অনুভব করে: আপনি কেন সেই স্ক্রিনের সময় স্টাফ লোড করতে চান?
ডপপেলগ্র্রেনার

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

@ ডিএমজি গ্রেগরি গ্রেট পয়েন্ট। আমি প্রশ্ন আপডেট। আমি কোড চালানোর চেষ্টা করছি।
ইভোরর

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

উত্তর:


9

আমি সবেমাত্র কিছু পরীক্ষা করেছি এবং আমি দেখতে পেয়েছি যে স্প্ল্যাশ স্ক্রিনটি এখনও প্রদর্শিত থাকাকালীন প্রথম দৃশ্যে অবজেক্টগুলির জন্য কনস্ট্রাক্টরটি আসলে কল হয়ে যায়।

স্থিতিশীল স্টপওয়াচ দিয়ে আমি পরিমাপ করা কিছু সময় এখানে রইল:

Constructed  0     s
Awake        2.118 s
OnEnable     2.12  s
Start        2.744 s
First Update 2.919 s

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

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


1
শেষের 3 সেকেন্ড আগে, আপনি বলতে চাচ্ছেন, শুরুর এক সেকেন্ড আগে?
জ্যাকব

আমার পরীক্ষায়, আমার স্ক্রিপ্টটি Update()নির্মাণকারীর বরখাস্ত হওয়ার ২.৯ সেকেন্ড পরে প্রথম টিক পেয়েছে ick বর্তমান উপকরণের সাথে আমি এটি বুঝতে পারি about
ডিএমগ্রিগরি

2

আপনার সেরা বাজিটি আপনার নিজের লোডিং স্ক্রিন তৈরি করা এবং এটি প্রাথমিক দৃশ্য হিসাবে সেট করা। তারপরে, সেই সাধারণ দৃশ্যটি থেকে, দৃশ্যের ম্যানেজারটি পরবর্তী দৃশ্যেরটিকে পটভূমিতে সংযুক্তিকরূপে লোড করতে ব্যবহার করুন ।

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

কিছু প্ল্যাটফর্মে, স্প্ল্যাশ স্ক্রিনটি চলে যাওয়ার আগে গেমটি চলতে শুরু করে, যদি লোডিং দ্রুত হয়।

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


ডাবল লোড পর্দা আপনি কি পরামর্শ দিচ্ছেন?
ইভোরর

মূলত হ্যাঁ এটি Unক্যের সাথে করার উপায়। আপনার গেমের জন্য একটি স্প্ল্যাশ / লোডিং স্ক্রিন বা কিছু স্টুডিও লোগো অ্যানিমেশন রাখুন যখন এটি পরবর্তী দৃশ্যের লোড হয়।
স্টিফেন হকেনহুল

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

-1

সংক্ষিপ্ত উত্তর হ'ল না , আপনি এটি করতে পারবেন না।

উপরের উভয় উত্তর দৃশ্য পরিচালনার ক্ষেত্রে সঠিক। আপনি দৃশ্যটি লোড করতে দৃশ্যের পরিচালক ব্যবহার করতে পারেন এবং এটি async হওয়ায় আপনি সমান্তরালভাবে অন্যান্য কোড চালাতে পারেন।

SceneManager.LoadScene আরো বিস্তারিত জানার জন্য ডকুমেন্টেশন।

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

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

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

সুতরাং প্রবাহটি এরকম কিছু হবে:

  1. স্প্ল্যাশ স্ক্রিন (এখানে কোনও চিত্র নেই, কেবল এটি কালো করুন)
  2. স্প্ল্যাশ দৃশ্য (আপনার প্রাথমিক কোড এবং পরবর্তী দৃশ্যের লোডার সহ ছোট পায়ের ছাপ)
  3. পরিচয়ের দৃশ্য (নিয়মিত পরিচয়ের দৃশ্য)
  4. .... (যথারীতি অন্যান্য দৃশ্য)

ছোট দৃশ্যের দ্রুততর এটি লোড হবে। আপনি বোঝা স্প্ল্যাশ স্ক্রিনে কোনও বস্তুর সাথে সংযুক্ত স্প্ল্যাশ নিয়ন্ত্রকের মতো কিছু ব্যবহার করতে পারেন ।

using UnityEngine;
using UnityEngine.SceneManagement;

public class SplashController: MonoBehaviour
{
    void Start()
    {

        // RunSomeSyncMethod();

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