ºÇ½ª¹¹¿·¡§
orika_ex_miyako 2024ǯ01·î08Æü(·î) 16:30:25ÍúÎò
¡¡°Ê²¼¤ÏºîÀ®¥µ¥ó¥×¥ë¤Ç¤¹¡£

¡¡¥²¡¼¥à³«È¯¤ò»Ï¤á¤ëºÝ¡¢¥×¥í¥°¥é¥à¤Î¹½Â¤¤äÀ߷פ¬½ÅÍפǤ¹¡£
ÆÃ¤Ë¡¢¥¯¥é¥¹¿Þ¤ÈÀ߷פÎÍý²ò¤Ï¡¢¥×¥í¥¸¥§¥¯¥È¤ÎÀ®¸ù¤ËÉԲķç¤Ç¤¹¡£
¡¡
¡¡¥¯¥é¥¹¿Þ¤Ï¡¢¥½¥Õ¥È¥¦¥§¥¢¤Î¹½Â¤¤ò»ë³ÐŪ¤Ëɽ¸½¤¹¤ë¤¿¤á¤Î¿Þ¤Ç¡¢¥¯¥é¥¹¤ä¤½¤Î´Ö¤Î´Ø·¸¤ò¼¨¤·¤Þ¤¹¡£
Unity¤Î¥×¥í¥¸¥§¥¯¥È¤Ë¤ª¤¤¤Æ¡¢¥¯¥é¥¹¿Þ¤Ï¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤ä¥³¥ó¥Ý¡¼¥Í¥ó¥È¡¢¥¹¥¯¥ê¥×¥È¤Ê¤É¤Î¥¯¥é¥¹¤È¤½¤ì¤é¤Î´ØÏ¢À¤ò¼¨¤¹¤Î¤ËÌòΩ¤Á¤Þ¤¹¡£
¡¡¥¯¥é¥¹¿Þ¤òºîÀ®¤¹¤ë¤³¤È¤Ë¤è¤ê¡¢¥×¥í¥°¥é¥à¤Î¹½Â¤¤ò»ë³ÐŪ¤Ë¼¨¤·¡¢°Û¤Ê¤ë¥¯¥é¥¹´Ö¤Î´Ø·¸¤ä°Í¸À¤òÍý²ò¤·¤ä¤¹¤¯¤·¤Þ¤¹¡£
¤³¤ì¤Ë¤è¤ê¡¢³«È¯¼Ô¤Ï¥×¥í¥°¥é¥à¤ò¤è¤ê½ÀÆð¤Ç³ÈÄ¥²Äǽ¤Ê·Á¤ÇÀ߷פǤ¤Þ¤¹¡£
¡¡PlantUML ¤ò³èÍѤ¹¤ë¤³¤È¤Ë¤è¤ê¡¢Rider ¾å¤Ç¥¯¥é¥¹¿Þ¤òºîÀ®¤¹¤ë¤³¤È¤¬²Äǽ¤Ç¤¹¡£
¡¡PlantUML ¤Î¸ø¼°¥µ¥¤¥È¤Ï¤³¤Á¤é¤Ç¤¹¡£
ƳÆþÊýË¡¡¢FAQ ¤Ê¤É¤âÍѰդµ¤ì¤Æ¤¤¤Þ¤¹¡£
PlantUML ¸ø¼°¥µ¥¤¥È
https://plantuml.com/ja/
¡¡Rider ¤Î¸ø¼°¥Þ¡¼¥±¥Ã¥È¥×¥ì¥¤¥¹¤«¤é PlantUML ¥×¥é¥°¥¤¥ó¤ò¥À¥¦¥ó¥í¡¼¥É½ÐÍè¤Þ¤¹¡£
PlantUML integration
https://plugins.jetbrains.com/plugin/7017-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
¡¡Æ³ÆþÊýË¡¤Ë¤Ä¤¤¤Æ¤â¾Ü¤·¤¯·ÇºÜ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£
SHIMAHINUKO ÍÍ
Rider¤ÇPlantUML¤ò»È¤Ã¤ÆUnity¤Î¤¿¤á¤Î¥¯¥é¥¹¿Þ¤ò½ñ¤¯
DevNote ÍÍ
¡ÚmacOS¡ÛRider¤Ç¥¯¥é¥¹¿Þ¤ò½ñ¤¯¥×¥é¥°¥¤¥óPlantUML Integration
- ¥«¥Æ¥´¥ê¡§
- ¿Ê³Ø/¥¹¥¯¡¼¥ë
- ¥×¥í¥°¥é¥ß¥ó¥°







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