Unity¤Ë´ØÏ¢¤¹¤ëµ­»ö¤Ç¤¹

¡¡Rider ¤Ë¤ª¤¤¤Æ PlantUML ¤òÍøÍѤ·¤¿¥¯¥é¥¹¿Þ¤ÎºîÀ®¤¬²Äǽ¤Ç¤¹¡£

¡¡°Ê²¼¤ÏºîÀ®¥µ¥ó¥×¥ë¤Ç¤¹¡£





¥¯¥é¥¹¿Þ


¡¡¥²¡¼¥à³«È¯¤ò»Ï¤á¤ëºÝ¡¢¥×¥í¥°¥é¥à¤Î¹½Â¤¤äÀ߷פ¬½ÅÍפǤ¹¡£
Æäˡ¢¥¯¥é¥¹¿Þ¤ÈÀ߷פÎÍý²ò¤Ï¡¢¥×¥í¥¸¥§¥¯¥È¤ÎÀ®¸ù¤ËÉԲķç¤Ç¤¹¡£
¡¡
¡¡¥¯¥é¥¹¿Þ¤Ï¡¢¥½¥Õ¥È¥¦¥§¥¢¤Î¹½Â¤¤ò»ë³ÐŪ¤Ëɽ¸½¤¹¤ë¤¿¤á¤Î¿Þ¤Ç¡¢¥¯¥é¥¹¤ä¤½¤Î´Ö¤Î´Ø·¸¤ò¼¨¤·¤Þ¤¹¡£
Unity¤Î¥×¥í¥¸¥§¥¯¥È¤Ë¤ª¤¤¤Æ¡¢¥¯¥é¥¹¿Þ¤Ï¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤ä¥³¥ó¥Ý¡¼¥Í¥ó¥È¡¢¥¹¥¯¥ê¥×¥È¤Ê¤É¤Î¥¯¥é¥¹¤È¤½¤ì¤é¤Î´ØÏ¢À­¤ò¼¨¤¹¤Î¤ËÌòΩ¤Á¤Þ¤¹¡£



¡¡¥¯¥é¥¹¿Þ¤òºîÀ®¤¹¤ë¤³¤È¤Ë¤è¤ê¡¢¥×¥í¥°¥é¥à¤Î¹½Â¤¤ò»ë³ÐŪ¤Ë¼¨¤·¡¢°Û¤Ê¤ë¥¯¥é¥¹´Ö¤Î´Ø·¸¤ä°Í¸À­¤òÍý²ò¤·¤ä¤¹¤¯¤·¤Þ¤¹¡£
¤³¤ì¤Ë¤è¤ê¡¢³«È¯¼Ô¤Ï¥×¥í¥°¥é¥à¤ò¤è¤ê½ÀÆð¤Ç³ÈÄ¥²Äǽ¤Ê·Á¤ÇÀ߷פǤ­¤Þ¤¹¡£

¡¡PlantUML ¤ò³èÍѤ¹¤ë¤³¤È¤Ë¤è¤ê¡¢Rider ¾å¤Ç¥¯¥é¥¹¿Þ¤òºîÀ®¤¹¤ë¤³¤È¤¬²Äǽ¤Ç¤¹¡£


PlantUML ƳÆþÊýË¡


¡¡PlantUML ¤Î¸ø¼°¥µ¥¤¥È¤Ï¤³¤Á¤é¤Ç¤¹¡£
ƳÆþÊýË¡¡¢FAQ ¤Ê¤É¤âÍÑ°Õ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£


PlantUML ¸ø¼°¥µ¥¤¥È
https://plantuml.com/ja/



¡¡Rider ¤Î¸ø¼°¥Þ¡¼¥±¥Ã¥È¥×¥ì¥¤¥¹¤«¤é PlantUML ¥×¥é¥°¥¤¥ó¤ò¥À¥¦¥ó¥í¡¼¥É½ÐÍè¤Þ¤¹¡£


PlantUML integration
https://plugins.jetbrains.com/plugin/7017-plantuml...


¡¡¾åµ­¤Ç¤ÎƳÆþ¤¬Æñ¤·¤¤¾ì¹ç¡¢¥µ¥¤¥ÈºÇ²¼Ãʤ˥ê¥ó¥¯¤òÍÑ°Õ¤·¤Æ¤¢¤ê¤Þ¤¹¡£


PlantUML ¥Õ¥¡¥¤¥ë¤ÎºîÀ®


¡¡Rider Æâ¤Ë PlantUML ¥¦¥£¥ó¥É¥¦¤ò³«¤¯¤³¤È¤Ç¥¯¥é¥¹¿Þ¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£
¥á¥Ë¥å¡¼¤è¤ê View¡¡¢ª Tool Windows¡¡¢ª¡¡PlantUML ¤Ç PlantUML ¥¦¥£¥ó¥É¥¦¤ò³«¤¯¤³¤È¤¬½ÐÍè¤Þ¤¹¡£

¡¡¥Õ¥¡¥¤¥ë´ÉÍý¤Î¤¿¤á¡¢ÀìÍѤΥե©¥ë¥À¤òºîÀ®¤·¡¢¤½¤ÎÃæ¤Ë PlantUML ¥Õ¥¡¥¤¥ë¤ÎºîÀ®¤¹¤ë¤È´ÉÍý¤·¤ä¤¹¤¯¤Ê¤ê¤Þ¤¹¡£
¥Õ¥©¥ë¥À¤Î¾å¤Ç¥á¥Ë¥å¡¼¤ò³«¤­¡¢Add ¢ª PlantUML ¤Ç PlantUML ¥Õ¥¡¥¤¥ë¤òºîÀ®¤Ç¤­¤Þ¤¹¡£
¤³¤Á¤é¤ËÀìÍѤε­Ë¡¤ò»È¤Ã¤Æ¥¯¥é¥¹¿Þ¤òºîÀ®¤·¤Æ¤¤¤­¤Þ¤¹¡£

¡¡¤Ê¤ª¡¢¥Õ¥¡¥¤¥ë̾¤Î̾¾Î¤Ï¥×¥í¥¸¥§¥¯¥È̾¡¢namespace¡¢Ìò³ä¤´¤È¤Î̾Á°¤Ë Diaglam ¤ò¹ç¤ï¤»¤Æ¤ª¤¯¤È¤ï¤«¤ê¤ä¤¹¤¤¤Ç¤¹¡£





¡¡¥¯¥é¥¹¿Þ¤ÎÀ©ºîÊýË¡¤Ë¤Ä¤¤¤Æ¤Ï¡¢¸ø¼°¥µ¥¤¥È¤Ëµ­Ë¡¤¬µ­ºÜ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£


PlantUML ¥¯¥é¥¹¿Þ
https://plantuml.com/ja/class-diagram


¡ã¥µ¥ó¥×¥ë¡ä


¡¡Unity ¤Î¸ø¼°¥×¥í¥¸¥§¥¯¥È¤Ç¤¢¤ë RunnerGame ¥Æ¥ó¥×¥ì¡¼¥È¤Î¥¯¥é¥¹¿Þ¤ò PlantUML ¤Ë¤ÆºîÀ®¤·¡¢½ÐÎϤ·¤Æ¤ß¤Þ¤·¤¿¡£


https://blog.unity.com/ja/games/rapid-prototyping-...

https://unity.com/ja/features/build-a-runner-game



@startuml
'https://plantuml.com/sequence-diagram


package "HyperCasual.Core" {

    package "Singleton"{
        abstract class AbstractSingleton<T>{
            {static} T s_Instance
            +{static} T Instance
            
            #virtual void Awake()
        }
    }
    
package "StateMachine"{
    
        interface ILink{
            +bool Validate(out IState nextState)
            +void Enable()
            +void Disable()
        }
        
        class Link {
            -readonly IState m_NextState
            +Link(IState nextState)
            +bool Validate(out IState nextState)
        }
        
        class EventLink{
            -IState m_NextState
            -AbstractGameEvent m_GameEvent
            -bool m_EventRaised
            
            +EventLink(AbstractGameEvent gameEvent, IState nextState)
            +bool Validate(out IState nextState)
            +void OnEventRaised()
            +void Enable()
            +void Disable()
        }
    

    interface IState{
       +void Enter()
       +IEnumerator Execute()
       +void Exit()
       +void AddLink(ILink link)
       +void RemoveLink(ILink link)
       +void RemoveAllLinks()
       +bool ValidateLinks(out IState nextState)
       +void EnableLinks()
       +void DisableLinks()
    }

    abstract class AbstractState{
       +virtual string Name
       -readonly List<ILink> m_Links
    }
    
    class State{
        -readonly Action m_OnExecute
        +State(Action onExecute)
        +override IEnumerator Execute()
    }
    
    class DelayState{
        +override string Name
        -readonly float m_DelayInSeconds
        +DelayState(float delayInSeconds)
        +override IEnumerator Execute()
    }
        
    class PauseState{
        -readonly Action m_OnPause
        +override string Name
        +PauseState(Action onPause)
        +override void Enter()
        +override IEnumerator Execute()
        +override void Exit()
    }
  
    class LoadSceneState{
        readonly string m_Scene
        readonly SceneController m_SceneController
        readonly Action m_OnLoadCompleted
            
        +override string Name
        +LoadSceneState(SceneController sceneController, 
            string scene, Action onLoadCompleted = null)
        +override IEnumerator Execute()
    }
      
    class UnloadLastSceneState{
        -readonly SceneController m_SceneController
        +UnloadLastSceneState(SceneController sceneController)
        +override IEnumerator Execute()
    }
    
        class StateMachine{
                +IState CurrentState
                +virtual void SetCurrentState(IState state)    
                -Coroutine m_CurrentPlayCoroutine
                -bool m_PlayLock
                -IEnumerator Play()
                -void Skip()
                +virtual void Run(IState state)       
                -Coroutine m_LoopCoroutine        
                +virtual void Run()       
                +void Stop()
                #virtual IEnumerator Loop()       
                +bool IsRunning
            }

    }
    
    
    package "EventSystem"{
    
    interface IGameEventListener{
        +OnEventRaised()
    }
    
    abstract class AbstractGameEvent{
        -readonly List<IGameEventListener> m_EventListeners
        +void Raise()
        +void AddListener(IGameEventListener listener)
        +void RemoveListener(IGameEventListener listener)
        +{abstract} void Reset()
    }
    
    class AppPauseDetector{
        -[SerializeField] AbstractGameEvent m_PauseEvent
        +bool IsPaused
        -OnApplicationFocus(bool hasFocus)
        -void OnApplicationPause(bool pauseStatus)      
    }
    
    class TriggerEvent{
        -const string k_PlayerTag
        -[SerializeField] AbstractGameEvent m_Event
        -OnTriggerEnter(Collider col)
    }
    
    }
    
    class GenericGameEventListener{
        +AbstractGameEvent m_Event
        +Action EventHandler
        +void Subscribe()
        +void Unsubscribe()
        +void OnEventRaised()
    }
}


package "HyperCasual.Gameplay" {

    class ItemPickedEvent{
        +int Count
        +override void Reset()
    }
    
    class LevelCompletedEvent {
        +override void Reset()
    }
    
    class LevelLostEvent {
        +override void Reset()
    }
}

IState <|.. AbstractState

AbstractState <|-- State
AbstractState <|-- DelayState
AbstractState <|-- LoadSceneState
AbstractState <|-- UnloadLastSceneState
AbstractState <|-- PauseState

ILink <|.. Link
ILink <|.. EventLink
IGameEventListener <|.. EventLink

IGameEventListener <|.. GenericGameEventListener

ScriptableObject <|-- AbstractGameEvent
AbstractGameEvent <|-- ItemPickedEvent
AbstractGameEvent <|-- LevelCompletedEvent
AbstractGameEvent <|-- LevelLostEvent

@enduml


½ÐÎÏ


¡¡PlantUML¥¦¥£¥ó¥É¥¦¤Ë¥¯¥é¥¹¿Þ¤¬Â¨»þ¤ËÈ¿±Ç¤µ¤ì¤Þ¤¹¡£

¡¡¤³¤³¤Ç¤ÏºÇ½é¤ËÄ󼨤·¤¿Á´Âοޤòʬ³ä¤·¤Æɽ¼¨¤·¤Æ¤¤¤Þ¤¹¡£











¥³¥á¥ó¥È¤ò¤«¤¯


¡Öhttp://¡×¤ò´Þ¤àÅê¹Æ¤Ï¶Ø»ß¤µ¤ì¤Æ¤¤¤Þ¤¹¡£

ÍøÍѵ¬Ìó¤ò¤´³Îǧ¤Î¤¦¤¨¤´µ­Æþ²¼¤µ¤¤

Menu



´ðÁÃ

µ»½Ñ/Ãμ±(¼ÂÁõÎã)

3D¥¢¥¯¥·¥ç¥ó¥²¡¼¥à

2D¤ª¤Ï¤¸¤­¥²¡¼¥à(ȯŸÊÔ)

2D¶¯À©²£¥¹¥¯¥í¡¼¥ë¥¢¥¯¥·¥ç¥ó(ȯŸÊÔ)

2D¥¿¥Ã¥×¥·¥å¡¼¥Æ¥£¥ó¥°(³ÈÄ¥ÊÔ)

¥ì¡¼¥¹¥²¡¼¥à(È´¿è)

2DÊüÃÖ¥²¡¼¥à(ȯŸÊÔ)

3D¥ì¡¼¥ë¥¬¥ó¥·¥å¡¼¥Æ¥£¥ó¥°(±þÍÑÊÔ)

3Dæ½Ð¥²¡¼¥à(È´¿è)

2D¥ê¥¢¥ë¥¿¥¤¥à¥¹¥È¥é¥Æ¥¸¡¼

3D¥¿¥Ã¥×¥¢¥¯¥·¥ç¥ó(NavMeshAgent »ÈÍÑ)

2D¥È¥Ã¥×¥Ó¥å¡¼¥¢¥¯¥·¥ç¥ó(¥«¥¨¥ë¤Î°Ù¤Ë¡Á¡¢¥Ü¥³¥¹¥«¥¦¥©¡¼¥ºÉ÷)

VideoPlayer ¥¤¥Ù¥ó¥ÈϢư¤Î¼ÂÁõÎã

VideoPlayer ¥ê¥¹¥ÈÆ⤫¤é¥à¡¼¥Ó¡¼ºÆÀ¸¤Î¼ÂÁõÎã(ȯŸ)

AR ²èÁüÉÕ¤­¥ª¥Ö¥¸¥§¥¯¥ÈÀ¸À®¤Î¼ÂÁõÎã

AR ¥ê¥¹¥ÈÆ⤫¤éÀ¸À®¤Î¼ÂÁõÎã(ȯŸ)

2D¥È¥Ã¥×¥Ó¥å¡¼¥¢¥¯¥·¥ç¥ó(¥µ¥Ð¥¤¥Ð¡¼É÷)

private



¤³¤Î¥µ¥¤¥ÈÆâ¤ÎºîÉʤϥæ¥Ë¥Æ¥£¤Á¤ã¤ó¥é¥¤¥»¥ó¥¹¾ò¹à¤Î¸µ¤ËÄ󶡤µ¤ì¤Æ¤¤¤Þ¤¹¡£

´ÉÍý¿Í/Éû´ÉÍý¿Í¤Î¤ßÊÔ½¸¤Ç¤­¤Þ¤¹