こんな感じです。
//プレハブを作る側のほう
public class ExampleManger : MonoBehaviour
{
public Transform prefab;
public AdvEngine advEngine;
void Sample()
{
for (int i = 0; i < 10; i++)
{
var obj = Instantiate(prefab);
var prefabComponent = obj.GetComponent<ExampleButton>();
prefabComponent.Init(advEngine);
}
}
}
//プレハブにつけるコンポーネント。AdvEngineを渡してほしい
public class ExampleButton : MonoBehaviour
{
private AdvEngine AdvEngine { get; set; }
public void Init(AdvEngine advEngine)
{
AdvEngine = advEngine;
}
}
上記のやり方が基本だと思いますが、一応例外として・・・
AwakeやStartなどはInstaiateと同時に呼ばれることがあるので、
AwakeやStartでAdvEngineへの参照が必要になった場合に問題が起きることがあります。
プレハブ側から、AdvEngineをFindする処理などを書く必要があります。
ですが、これは例外的な話で、処理が重いのであまりやらないほうがいいです。