我有以下課程
namespace _Scripts.EnemyStuff
{
public class Enemy : MonoBehaviour, IDamagable
{
}
}
然后,當我嘗試使用該類時,即使它們共享同一個父級Enemy,我也需要指定它來自。_Scripts.EnemyStuff
以下代碼未檢測到Enemy該類。我需要指定EnemyStuff.Enemy才能使其作業。
namespace _Scripts.Managers
{
public class EnemyManager : MonoBehaviour
{
public Enemy firstEnemyGO;
}
}
為什么會這樣?另外,如果我使用它為什么不起作用
using Enemy = _Scripts.EnemyStuff.Enemy;
uj5u.com熱心網友回復:
通常,您始終必須準確定義您所指的型別。我寧愿反過來看,在某些情況下,c# 已經“知道”,因此您可以省略命名空間或其中的一部分。其中例如
- 如果你有一個
using XYNamespace;,你現在可以XYNamespace.在參考其中的型別時省略。 - 如果您的型別在同一個命名空間或它的子命名空間中
另請參閱命名空間
共享同一個父級
他們真的沒有!您的命名空間層次結構看起來像
_Scripts
|-- EnemyStuff
| |-- Enemy
|
|-- Managers
|-- EnemyManager
_Scripts.Managers.XYc# 在父路徑(或)中查找向上遞回的型別,_Scripts.XY但不會冒泡回傳所有可能的同級命名空間。
所以是的,在這個結構中,你需要提供命名空間并使用例如
public EnemyStuff.Enemy firstEnemyGO;
EnemyStuff實際上可以在公共父命名空間中找到,因此_Scripts您可以省略_Scripts.
任何一個
using System;
using UnityEngine;
using Enemy = _Scripts.EnemyStuff.Enemy;
namespace _Scripts.Managers
{
public class EnemyManager : MonoBehaviour
{
public Enemy firstEnemyGO;
}
}
或者
using System;
using UnityEngine;
namespace _Scripts.Managers
{
using Enemy = EnemyStuff.Enemy;
public class EnemyManager : MonoBehaviour
{
public Enemy firstEnemyGO;
}
}
或者
using System;
using UnityEngine;
namespace _Scripts.Managers
{
public class EnemyManager : MonoBehaviour
{
public EnemyStuff.Enemy firstEnemyGO;
}
}
對我來說作業得很好
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/523505.html
