facebook twitter hatena line email

「Unity/DIフレームワーク/Extenject/ProjectContext」の版間の差分

提供: 初心者エンジニアの簡易メモ
移動: 案内検索
(ページの作成:「==ProjectContextとは== 全共通して使えるSceneContext 参考:https://www.subarunari.com/entry/2018/01/08/024341 ==準備== #Edit/Zenject/CreateProjectContext...」)
 
(サンプル)
 
行25: 行25:
 
         Container
 
         Container
 
             .Bind<ProjectContextLogic>()
 
             .Bind<ProjectContextLogic>()
            .To<ProjectContextLogic>()
 
 
             .AsTransient();
 
             .AsTransient();
 
     }
 
     }

2023年11月15日 (水) 12:29時点における最新版

ProjectContextとは

全共通して使えるSceneContext

参考:https://www.subarunari.com/entry/2018/01/08/024341

準備

  1. Edit/Zenject/CreateProjectContextで、Project内の、Resources直下に、ProjectContextを作られる
  2. 適当なInstaller(以下例ではProjectContextInstaller)を作り、Prefab化したGameObjectにAddComponentしておく。
  3. ProjectContextのPrefabInstallersに、上記Installerを追加する。
  4. ヒエラルキー上に、SceneContextを作っておく。

サンプル

ProjectContextInstaller.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Zenject;
using System;

public class ProjectContextInstaller : MonoInstaller
{
    public override void InstallBindings()
    {
        Container
            .Bind<ProjectContextLogic>()
            .AsTransient();
    }
}

ProjectContextLogic.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ProjectContextLogic : ILogic
{
    public bool Exec()
    {
        Debug.Log("ProjectContextLogic Exec");
        return true;
    }
}

ProjectContextMain.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Zenject;

public class ProjectContextMain : MonoBehaviour
{
    [Inject] ProjectContextLogic _logic;
    void Start()
    {
        _logic.Exec();
    }
}

ProjectContextMainを追加したシーンでは、"ProjectContextLogic Exec"とログが表示され、追加してないシーンでは、ProjectContextが作られるが、ログは出ない。