コード例 #1
0
    public override void GetContent(IDocumentationBuilder _)
    {
        base.GetContent(_);
        _.Paragraph("The uFrame Kernel is an essential piece of uFrame, it handles loading scenes, systems and services.  " +
                    "The kernel is nothing more than a prefab with these types of components attached to it in an organized manner.");



        _.ImageByUrl("http://i.imgur.com/5Rg2X25.png");

        _.Paragraph("In the image above you can see the scene 'BasicsProjectKernelScene'.  This scene will always always contain the 'BasicsProjectKernel' " +
                    "prefab and any other things that need to live throughout the entire lifecycle of your application.");
        _.Paragraph("Important Note: All SystemLoaders, Services, and SceneLoaders are MonoBehaviours attached their corresponding child game-objects in the kernel prefab.");

        _.Note(
            "Whenever a scene begins, uFrame will ensure that the kernel is loaded, if it hasen't been loaded it will delay " +
            "its loading mechanism until the kernel has been loaded. This is necessary because you might initialize ViewModels, deserialize them...etc so the view should not bind until that data is ready.");

        _.Break();

        _.Title2("Scaffolding The Kernel");
        _.Paragraph("For convenience uFrame 1.6 makes the process of creating the kernel very easy and straightforward.  " +
                    "By pressing the Scaffold/Update Kernel button it will create a scene, and a prefab with all of the types created by the uFrame designer.  " +
                    "You can freely modify the kernel, and updating it will only add anything that is not there.");
        _.Break();

        _.Title2("Boot Order");
        _.ImageByUrl("http://i.imgur.com/L5CC8q8.png");


        _.Title2("The Game Ready Event");
        _.Paragraph("Once the kernal has loaded, it will publish the event 'GameReadyEvent'.  This event ensures that everything is loaded and bindings have properly taken place on views.");
    }
コード例 #2
0
ファイル: TheKernel.cs プロジェクト: wang-yichun/AnimalStory
    public override void GetContent(IDocumentationBuilder _)
    {
        base.GetContent(_);
        _.Paragraph("The uFrame Kernel is an essential piece of uFrame, it handles loading scenes, systems and services.  " +
                    "The kernel is nothing more than a prefab with these types of components attached to it in an organized manner.");

        _.ImageByUrl("http://i.imgur.com/5Rg2X25.png");

        _.Paragraph("In the image above you can see the scene 'BasicsProjectKernelScene'.  This scene will always always contain the 'BasicsProjectKernel' " +
                    "prefab and any other things that need to live throughout the entire lifecycle of your application.");
        _.Paragraph("Important Note: All SystemLoaders, Services, and SceneLoaders are MonoBehaviours attached their corresponding child game-objects in the kernel prefab.");

        _.Note(
            "Whenever a scene begins, uFrame will ensure that the kernel is loaded, if it hasen't been loaded it will delay " +
            "its loading mechanism until the kernel has been loaded. This is necessary because you might initialize ViewModels, deserialize them...etc so the view should not bind until that data is ready.");

        _.Break();

        _.Title2("Scaffolding The Kernel");
        _.Paragraph("For convenience uFrame 1.6 makes the process of creating the kernel very easy and straightforward.  " +
                    "By pressing the Scaffold/Update Kernel button it will create a scene, and a prefab with all of the types created by the uFrame designer.  " +
                    "You can freely modify the kernel, and updating it will only add anything that is not there.");
        _.Break();

        _.Title2("Boot Order");
        _.ImageByUrl("http://i.imgur.com/L5CC8q8.png");

        _.Title2("The Game Ready Event");
        _.Paragraph("Once the kernal has loaded, it will publish the event 'GameReadyEvent'.  This event ensures that everything is loaded and bindings have properly taken place on views.");
    }
コード例 #3
0
 public override void GetContent(IDocumentationBuilder _)
 {
     base.GetContent(_);
     _.Paragraph("By default uFrame keeps up with viewmodels for us.  It maintains a manager for each type of viewmodel you create.");
     _.Paragraph("To access these managers, you can inject them into controllers and services using the following code.");
     _.Break();
     _.CodeSnippet("[Inject] public IViewModelManager<MyViewModel> MyViewModelsManager { get; set; }");
     _.Break();
     _.Note("Important Note: By default every element controller already generates manager properties just like the above example for the associated element's viewmodel.");
 }
コード例 #4
0
    public override void GetContent(IDocumentationBuilder _)
    {
        base.GetContent(_);
        _.Section("What is interactive tutorial?");
        _.Paragraph("Interactive tutorial is a new experimental type of learning material. Unlike regular static tutorials, interactive tutorials communicate with the environment to perform the following tasks:\n\n" +
                    "* Step completion analysis\n" +
                    "* Just-In-Time hints and troubleshooting\n" +
                    "* Dynamic content adjustments\n");

        _.Paragraph("Each tutorial exposes several steps to go through. It analyses current state of your project and figures out if current step is complete.");
        _.Note("Interactive tutorial re-evaluates the environment every time you focus documentation window with this tutorial opened. So once you think you finished the step, please, focus the documentation window" +
               " and let interactive tutorial check your progress. If conditions are met, the current step will be considered finished and the next step will be revealed");
        _.Paragraph("While following the tutorial, you may accidently break something, that you have done in the previous step. In this case, tutorial goes back to the broken step and you will have to adjust your  ");
        _.Paragraph("Based on your actions, the content of the step may be adjusted to guide you in the right direction. More over, text of each tutorial tends to adjust to your current task. That is why, learning material of each step may change as you progress.");
    }
コード例 #5
0
    public override void GetContent(IDocumentationBuilder _)
    {
        base.GetContent(_);
        _.Section("What is interactive tutorial?");
        _.Paragraph("Interactive tutorial is a new experimental type of learning material. Unlike regular static tutorials, interactive tutorials communicate with the environment to perform the following tasks:\n\n" +
                    "* Step completion analysis\n" +
                    "* Just-In-Time hints and troubleshooting\n" +
                    "* Dynamic content adjustments\n");

        _.Paragraph("Each tutorial exposes several steps to go through. It analyses current state of your project and figures out if current step is complete.");
        _.Note("Interactive tutorial re-evaluates the environment every time you focus documentation window with this tutorial opened. So once you think you finished the step, please, focus the documentation window" +
               " and let interactive tutorial check your progress. If conditions are met, the current step will be considered finished and the next step will be revealed");
        _.Paragraph("While following the tutorial, you may accidently break something, that you have done in the previous step. In this case, tutorial goes back to the broken step and you will have to adjust your  ");
        _.Paragraph("Based on your actions, the content of the step may be adjusted to guide you in the right direction. More over, text of each tutorial tends to adjust to your current task. That is why, learning material of each step may change as you progress.");
    }
コード例 #6
0
 public override void GetContent(IDocumentationBuilder _)
 {
     base.GetContent(_);
     _.Paragraph("uFrame, specifically created for the Unity game engine, uses a pattern-based framework called MVVM (Model View ViewModel). It is designed to provide developers with the visual editing tools, code structure and knowledge to develop games faster and more efficiently. This \"frame of mind\" for creating games is different than what most Unity developers are used to, but once understood the possibilities of where an idea can go are limitless. So, let's jump right into the \"uFrame of mind\"! ");
     _.Title2("Making things simple");
     _.Paragraph("Far too often game development begins with throwing a bunch of random game objects and components together and then retrofitting code in hopes of creating a masterpiece. Teams fail to focus on the basic concepts first and are left with trying to assemble pieces of a project that don't quite fit together. Doesn't make much sense does it?");
     _.Paragraph("uFrame simplifies things by separating out the essential and peripheral parts of the Unity's component model. It eliminates the visual noise (user-interface, HUD, transformers, positions, rotations, working with geometry, shaders, pathfinders, mouse events etc.) that can overwhelm and discourage many developers, and allows them to initially focus on the core logic.");
     _.Paragraph("uFrame does this with the use of Elements . Each element in a game has different parts, which consists of the ViewModel, Controller, View and possibly the View Component. A ViewModel serves as interface between the visual entities and logic of the game. These entities include properties (Score, Ammo, etc.), collections (Players, Environments etc.), and commands (PlayerHit, Upgrade etc.). A Controller works with a ViewModel to initialize and modify data when a command is invoked and/or interaction occurs between an event and the user. ");
     _.Break();
     _.Title2("Always Consider Portability.");
     _.Paragraph("In uFrame, both the Controller and the ViewModel are \"portable\" parts of a game. This means taking them outside of Unity and putting them into a separate environment, such as a terminal application or web server, will never be an issue. In fact, this is essential to providing proper support for the extended features of uFrame and is enforced by the Element Designer (which limit the types that are available). This should always be taken into consideration when developing or extending Controllers or ViewModels. ");
     _.Note("Even if a game doesn't need portability it is still good to think in these terms. uFrame is built around this concept, which allows each piece to fit together more naturally.");
     _.Break();
     _.Title2("Making The Noise Sing.");
     _.Paragraph("The other two parts of the element, the View and the View Component, connect the game logic with the visual noise. They are the key components that connect Unity to the Controllers and ViewModels, bringing the game to life. A View Component can read and modify the real-time data of a ViewModel, but isn't necessary for every element. It is only meant to provide an extra level of extendibility when needed. A View (which is technically a View Component, but with a larger role) binds to an element's data so that it's notified when something is changed. When these changes occur, it directs the View Component to execute the appropriate action. Views also execute the commands of events and interactions that occur in the scene (e.g. Collision, MouseClick, Hover). ");
     _.Break();
     _.Title2("Naming Things.");
     _.Paragraph("When creating elements, particularly element commands, it's important to think about how things are being named. For instance, if a player can pick up an item when a game object collides with it and when the player clicks on it, then a developer would want to create a label such as \"PickUpItem\", that describes both commands. This would more broadly explain its function and allow for items to be collected in a different way, if the developer so chooses.  ");
     _.Break();
 }