Ullক্যে নালরফেরানএক্সেপশন


11

যেহেতু অনেক ব্যবহারকারী NullReferenceException: Object reference not set to an instance of an objectইউনিটিতে ত্রুটির মুখোমুখি হচ্ছে , তাই আমি ভেবেছিলাম যে একাধিক উত্স থেকে কিছু ব্যাখ্যা এবং এই ত্রুটিটি সমাধানের উপায়গুলি সংগ্রহ করা ভাল ধারণা হবে idea


লক্ষণ

আমি আমার কনসোলটিতে উপস্থিত হয়ে ত্রুটিটি পেয়ে যাচ্ছি, এর অর্থ কী এবং আমি কীভাবে এটি ঠিক করব?

নাল রেফারেন্সইপ্সেশন: অবজেক্ট রেফারেন্স কোনও অবজেক্টের উদাহরণে সেট করা হয়নি


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

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

@ পিকেলেক, সাধারণ প্রোগ্রামিংয়ের ক্ষেত্রে আমরা যা অনুমোদন করি তার জন্য আমরা আমাদের সুযোগও প্রসারিত করেছি। আমি মেটাতে এটি সম্পর্কে জিজ্ঞাসা করা হলে এটি স্পষ্ট হয়েছিল । আমি এখন উপলব্ধি করেছি যে জোশের উত্তর অনুসারে এটি এখনও খুব জেনেরিকের পরামিতিগুলির সাথে খাপ খায়।
জেনমলক

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

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

উত্তর:


14

মান টাইপ বনাম রেফারেন্স প্রকার

অনেক প্রোগ্রামিং ভাষায়, ভেরিয়েবলগুলিকে "ডেটা টাইপ" বলা হয়। দুটি প্রাথমিক তথ্য প্রকারের মান হ'ল মান প্রকার (ইনট, ফ্লোট, বুল, চর, স্ট্রাক্ট, ...) এবং রেফারেন্স টাইপ (ক্লাসের উদাহরণ)। মান ধরণের মানগুলি নিজেই থাকে তবে রেফারেন্সগুলিতে মানগুলির একটি সেট (সি / সি ++ এর সমান) অন্তর্ভুক্ত করার জন্য বরাদ্দকৃত মেমরির একটি অংশকে নির্দেশ করে একটি মেমরি ঠিকানা থাকে।

উদাহরণস্বরূপ, Vector3একটি মান ধরণের (স্থানাঙ্ক এবং কিছু ফাংশন সমন্বিত একটি কাঠামো) যখন আপনার গেমওজেক্টের সাথে সংযুক্ত উপাদানগুলি (আপনার কাস্টম স্ক্রিপ্টগুলি উত্তরাধিকার সূত্রে প্রাপ্ত হয় MonoBehaviour) উল্লেখযোগ্য প্রকার।

আমি কখন নুলরেফারেন্সেপশন করতে পারি?

NullReferenceException আপনি যখন কোনও রেফারেন্স ভেরিয়েবল অ্যাক্সেস করার চেষ্টা করেন যা কোনও বস্তুর রেফারেন্স দেয় না, তখন নিক্ষিপ্ত হয় (মেমোরি ঠিকানা 0 নির্দেশ করে)।

কিছু সাধারণ স্থান NullReferenceExceptionউত্থাপিত হবে:

কোনও গেমঅজেক্ট / উপাদান যা মনিটরিপেক্টরে সুনির্দিষ্ট করা হয়নি তা নিয়ে ম্যানিপুলেট করা

// t is a reference to a Transform.
public Transform t ;

private void Awake()
{
     // If you do not assign something to t
     // (either from the Inspector or using GetComponent), t is null!
     t.Translate();
}

গেমওজেক্টের সাথে সংযুক্ত না থাকা কোনও উপাদান পুনরুদ্ধার করা এবং তারপরে, এটি চালনার চেষ্টা করা:

private void Awake ()
{
    // Here, you try to get the Collider component attached to your gameobject
    Collider collider = gameObject.GetComponent<Collider>();

    // But, if you haven't any collider attached to your gameobject,
    // GetComponent won't find it and will return null, and you will get the exception.
    collider.enabled = false ;
}

অস্তিত্ব নেই এমন একটি গেমবজেক্ট অ্যাক্সেস করা:

private void Start()
{
    // Here, you try to get a gameobject in your scene
    GameObject myGameObject = GameObject.Find("AGameObjectThatDoesntExist");

    // If no object with the EXACT name "AGameObjectThatDoesntExist" exist in your scene,
    // GameObject.Find will return null, and you will get the exception.
    myGameObject.name = "NullReferenceException";
}

নোট: হউন সাবধান, GameObject.Find, GameObject.FindWithTag, GameObject.FindObjectOfTypeশুধুমাত্র gameObjects যে আসতে সক্ষম করা শ্রেণীবিন্যাসে যখন ফাংশন বলা হয়।

ফিরে আসা গেটারের ফলাফলটি ব্যবহার করার চেষ্টা করা হচ্ছে null:

var fov = Camera.main.fieldOfView;
// main is null if no enabled cameras in the scene have the "MainCamera" tag.

var selection = EventSystem.current.firstSelectedGameObject;
// current is null if there's no active EventSystem in the scene.

var target = RenderTexture.active.width;
// active is null if the game is currently rendering straight to the window, not to a texture.

অ-সূচনাযুক্ত অ্যারের উপাদান অ্যাক্সেস করা

private GameObject[] myObjects ; // Uninitialized array

private void Start()
{
    for( int i = 0 ; i < myObjects.Length ; ++i )
        Debug.Log( myObjects[i].name ) ;
}

কম সাধারণ, তবে আপনি যদি সি # প্রতিনিধিদের সম্পর্কে এটি না জানেন তবে বিরক্ত হয়:

delegate double MathAction(double num);

// Regular method that matches signature:
static double Double(double input)
{
    return input * 2;
}

private void Awake()
{
    MathAction ma ;

    // Because you haven't "assigned" any method to the delegate,
    // you will have a NullReferenceException
    ma(1) ;

    ma = Double ;

    // Here, the delegate "contains" the Double method and
    // won't throw an exception
    ma(1) ;
}

কিভাবে ঠিক করবো ?

আপনি যদি পূর্বের প্যারাগ্রাফগুলি বুঝতে পেরে থাকেন তবে কীভাবে ত্রুটিটি ঠিক করতে হবে তা আপনি জানেন: আপনার ভেরিয়েবলটি কোনও শ্রেণীর উদাহরণ (নির্দেশিত) উল্লেখ করছে (বা প্রতিনিধিদের জন্য কমপক্ষে একটি ফাংশন রয়েছে)।

বলা সহজ করা কঠিন? হ্যাঁ, সত্যিই। সমস্যাটি এড়াতে এবং চিহ্নিত করার জন্য এখানে কিছু টিপস রয়েছে ।

"নোংরা" উপায়: চেষ্টা ও ধরার পদ্ধতি:

Collider collider = gameObject.GetComponent<Collider>();

try
{
    collider.enabled = false ;
}       
catch (System.NullReferenceException exception) {
    Debug.LogError("Oops, there is no collider attached", this) ;
}

"ক্লিনার" উপায় (আইএমএইচও): চেক

Collider collider = gameObject.GetComponent<Collider>();

if(collider != null)
{
    // You can safely manipulate the collider here
    collider.enabled = false;
}    
else
{
    Debug.LogError("Oops, there is no collider attached", this) ;
}

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

Debug.Logউদাহরণস্বরূপ কোন ফাংশনটি প্রথমে বলা হয় তা নির্ধারণ করতে ব্যবহার করা বেশ কার্যকর। ক্ষেত্রগুলি আরম্ভ করার জন্য যদি আপনার কোনও কার্যক্রমে দায়বদ্ধ থাকে Especially তবে Debug.Logআপনার কনসোলকে বিশৃঙ্খলা এড়াতে এগুলি সরাতে ভুলবেন না (এবং পারফরম্যান্সের কারণে)।

অন্য পরামর্শ, আপনার ফাংশন কলগুলি "কাট" করতে দ্বিধা করবেন না এবং Debug.Logকিছু চেক করতে যোগ করুন ।

পরিবর্তে :

 GameObject.Find("MyObject").GetComponent<MySuperComponent>().value = "foo" ;

প্রতিটি রেফারেন্স সেট করা আছে কিনা তা পরীক্ষা করতে এটি করুন:

GameObject myObject = GameObject.Find("MyObject") ;

Debug.Log( myObject ) ;

MySuperComponent superComponent = myObject.GetComponent<MySuperComponent>() ;

Debug.Log( superComponent ) ;

superComponent.value = "foo" ;

আর ভালো :

GameObject myObject = GameObject.Find("MyObject") ;

if( myObject != null )
{
   MySuperComponent superComponent = myObject.GetComponent<MySuperComponent>() ;
   if( superComponent != null )
   {
       superComponent.value = "foo" ;
   }
   else
   {
        Debug.Log("No SuperComponent found onMyObject!");
   }
}
else
{
   Debug.Log("Can't find MyObject!", this ) ;
}

সূত্র:

  1. http://answers.unity3d.com/questions/47830/what-is-a-null-reference-exception-in-unity.html
  2. /programming/218384/what-is-a-nullpointerexception-and-how-do-i-fix-it/218510#218510
  3. https://support.unity3d.com/hc/en-us/articles/206369473-NullReferenceException
  4. https://unity3d.com/fr/learn/tutorials/topics/scripting/data-types

সমস্যাটি নির্ণয়ের "কীভাবে" ব্যাখ্যা করার জন্য এটি প্রচুর পরিশ্রম করে। আমি যে প্রশ্ন "কি প্রকৃত উত্তর বিবেচনা করবে না হয় সমস্যা"। সাধারণত এই ধরণের প্রশ্নের উপর যে উত্তরগুলি উপস্থিত হয় সেগুলিও সম্বোধন করতে ব্যর্থ হয়। স্ট্যাকওভারফ্লো ডকুমেন্টেশনে সম্ভবত এটি আরও ভাল হবে? সম্ভবত না.
জেনমলক

2
আমি এটি বলব না যে ডিবাগ লগটি ব্যবহার করা অলস । আমার জন্য, ত্রুটিটি যেখানে ঘটছে তার সুযোগটি সঙ্কুচিত করতে ডিবাগ.লগটি ব্যবহার করা আরও দ্রুত , তারপরে ত্রুটিটি খুঁজে পেতে সত্যিই ডিবাগারটি ব্যবহার করুন। তবে এটি সর্বদা হাতের ত্রুটির উপর নির্ভর করে। যাই হোক না কেন, আমি বলব না যে ডিবাগ লগটি ব্যবহার করা অলস : পি
ভেইল্যানকোর্ট

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

আমি মনে করি যে যদি একটি স্পষ্টত ডিবাগ বার্তা সরবরাহ করা হয় তবে নাল চেক করা ভাল ধারণা হতে পারে else। কী আছে তা সরাসরি ব্যাখ্যা করার NullReferenceExceptionসময় একটি থাকা সর্বদা স্ব-বর্ণনামূলক নয় No Rigidbody component attached to the gameObject। আমি সম্মত হলাম যে কেবল if( obj != null )বার্তা ছাড়াই সমস্যাটি কেবল "আড়াল" করে, এবং আপনি একটি কার্যনির্বাহী প্রকল্প করতে পারেন তবে কেন তা না জেনে আপনি যা প্রত্যাশা করবেন তা করছেন না।
হেলিয়াম

4

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

উদাহরণস্বরূপ, এটি আমাদের ইনপুট নিয়ামকের একটি রেফারেন্স হতে পারে। এটি দুর্দান্ত যে নাল রেফারেন্স ব্যতিক্রমের কারণে গেমটি ক্রাশ হয় না, তবে কেন কোনও ইনপুট নিয়ামক নেই তা আমাদের খুঁজে বের করতে হবে এবং সেই সমস্যাটি সমাধান করতে হবে । এটি না করে আমাদের এমন একটি গেম রয়েছে যা ক্র্যাশ নাও হতে পারে তবে ইনপুটও নিতে পারে না।

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


আপনি কি "ম্যানেজার" শ্রেণিতে অ্যাক্সেস করার চেষ্টা করছেন?

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

আপনি কি আপনার বস্তুর উদাহরণটি উল্লেখ করছেন?

সাধারণভাবে রেফারেন্স হিসাবে চিহ্নিত করা সাধারণ public, তাই আমরা পরিদর্শকের মাধ্যমে উদাহরণটি রেফারেন্স সেট করতে পারি। সর্বদা পরীক্ষা আপনি যে আছে , একটি দৃষ্টান্ত রেফারেন্স সেট, পরিদর্শক মাধ্যমে যেমন বিরল এই পদক্ষেপ মিস করতে নয়।

আপনি কি আপনার দৃষ্টান্তটি ইনস্ট্যান্ট করছেন?

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

private GameObject gameObject;

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

gameObject = new GameObject();

ক্লাসগুলির ইউনিটি টিউটোরিয়ালটি কনস্ট্রাক্টর তৈরি এবং ব্যবহারের অনুশীলন ব্যাখ্যা করে।

আপনি GetComponent<t>()উপাদানটি বিদ্যমান বলে ধরে নিয়ে পদ্ধতিটি ব্যবহার করছেন ?

প্রথমত, নিশ্চিত করুন যে GetComponent<t>()উপাদানটির উদাহরণ থেকে আমরা কল করার আগে আমরা সর্বদা কল করি call

না যাওয়ার কারণেই আমরা আমাদের স্থানীয় গেম অবজেক্টটিতে একটি নির্দিষ্ট উপাদান রয়েছে বলে ধরে নিতে পারি এবং এটি দিয়ে অ্যাক্সেস করার চেষ্টা করতে পারি GetComponent<t>()। স্থানীয় গেম অবজেক্টে যদি সেই নির্দিষ্ট উপাদানটি না থাকে তবে আমরা একটি nullমান ফিরিয়ে দেব ।

nullএটি অ্যাক্সেস করার আগে আপনি সহজেই ফেরত মানটি কিনা তা পরীক্ষা করতে পারেন । তবে, যদি আপনার গেমের অবজেক্টে প্রয়োজনীয় উপাদান থাকা উচিত তবে এটির কমপক্ষে সেই উপাদানটির ডিফল্ট সংস্করণ রয়েছে কিনা তা নিশ্চিত করে নেওয়া ভাল । আমরা একটি ট্যাগ করতে পারবেন MonoBehaviourযেমন [RequireComponent(typeof(t))]নিশ্চিত করার আমরা সবসময় উপাদান যে টাইপ আছে।

এখানে একটি একটি উদাহরণ MonoBehaviourএকটি খেলা বস্তু সবসময় একটি থাকা উচিত জন্য Rigidbody। স্ক্রিপ্ট একটি খেলা বস্তু নেই যোগ করা হয় তাহলে না একটি ধারণ Rigidbody, একটি ডিফল্ট Rigidbodyতৈরি করা হবে।

[RequireComponent(typeof(Rigidbody))]
public class AlwaysHasRigidbody : MonoBehaviour
{
    Rigidbody myRigidbody;


    void Start()
    {
        myRigidbody = GetComponent<Rigidbody>();
    }
}

আপনি কি নিজের প্রকল্পটি পুনর্নির্মাণের চেষ্টা করেছেন?

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


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

-5

আমি দেখতে পাচ্ছি যে সেখানে একটি গ্রহণযোগ্য উত্তর আছে। তবে, পরিচালনার জন্য আপনার জন্য আরও ভাল উত্তর বা পরামর্শ থাকতে পারে NullReferenceException। আপনি যদি আমার মতো জাভা ভাষায় প্রোগ্রামিং সম্পর্কিত করতে পারেন তবে try-catchব্লকটি ব্যবহার করে নাল ত্রুটি পাঠানো থেকে বিরত রাখতে পারেন । নিজের জন্য চেষ্টা করুন! ;-)

আপনি যদি সি # তে ব্যবহার করছেন using System;, আপনার স্ক্রিপ্ট ফাইলের শীর্ষে আছে কি না তা পরীক্ষা করে দেখুন। যদি না হয়, এটি যোগ করুন। Exceptionকোডের একটি লাইন ধরার চেষ্টা করার সময় এখন আপনি সমস্ত ধরণের ক্লাস ব্যবহার করতে পারেন ।

আপনি যদি ইউনিটিস্ক্রিপ্ট ব্যবহার করছেন তবে ব্যবহার করুন import System;

এখানে একটি উদাহরণ:

using System; // --> This exact line of code. That's it.
using UnityEngine;

public class Test : MonoBehaviour {

    public GameObject player; // --> Example to check if there's a null content;

    public void Update() {

        // You may now catch null reference here.
        try {

            player.transform.Translate(0, 0, 2);

        } catch(NullReferenceException e) { // --> You may use this type of exception class

        }

    }
}

এছাড়াও মনে রাখবেন, আপনি যেমন হিসাবে অন্যান্য ব্যতিক্রম ধরতে পারে MissingReferenceException, MissingComponentException, IndexOutOfRangeException, যতদিন আপনি অন্তর্ভুক্ত হিসাবে বা অন্য কোন ব্যতিক্রম শ্রেণীর using Systemআপনার স্ক্রিপ্টের মধ্যে।

এটাই সব।


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