Unityでゲームを作っていたんですが、クラスの依存関係がグチャグチャになったので、解決策はないかと探しました。そこでよく解らないままVContainerを使ってみようと思い、VContainerのHelloWorldを参考にして作ってみたのですが、ログに"Hello World"が二回出力されます。
![]
以下に画像とコードを記載します。心当たりがお有りの方、いらっしゃいましたら教えていただけないでしょうか?
C#
1public class HelloWorldService 2{ 3 public void Hello () 4 { 5 Debug.Log ("Hello world"); 6 } 7}
C#
1public class GameLifetimeScope : LifetimeScope 2{ 3 [SerializeField] 4 HelloScreen helloScreen; 5 6 protected override void Configure (IContainerBuilder builder) 7 { 8 builder.RegisterEntryPoint<GamePresenter> (Lifetime.Singleton); 9 builder.Register<HelloWorldService> (Lifetime.Singleton); 10 builder.RegisterComponent (helloScreen); 11 12 builder.UseEntryPoints(Lifetime.Singleton, entryPoints => 13 { 14 entryPoints.Add<GamePresenter> (); 15 }); 16 } 17 18}
C#
1public class HelloScreen : MonoBehaviour 2{ 3 public Button HelloButton; 4}
C#
1public class GamePresenter : IStartable 2{ 3 readonly HelloWorldService helloWorldService; 4 readonly HelloScreen helloScreen; 5 6 public GamePresenter (HelloWorldService helloWorldService, 7 HelloScreen helloScreen) 8 { 9 this.helloWorldService = helloWorldService; 10 this.helloScreen = helloScreen; 11 } 12 13 void IStartable.Start () 14 { 15 helloScreen.HelloButton.onClick.AddListener (() => helloWorldService.Hello ()); 16 } 17}
unity2019.4.16f1
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー