In this final part of the series, we focus on building the User Interface (UI) for the Guild system in Atavism and implementing the remaining guild commands.
Prerequisites:
- Completion of Part IV of the series.
- Ability to edit C# scripts in Unity.
- Basic Unity skills (creating GameObjects, modifying Inspector values, etc.).
Step 1: Designing the User Interface
Before coding or UI creation, you should have a clear design idea. The main Guild UI panel might include:
- Guild Name.
- Message of the Day (MOTD).
- A list of Guild Members (with details like name, rank, level).
- Buttons for various actions (invite members, edit ranks, etc.).
- A scrollbar for the member list.
Create a mockup drawing to visualize the UI layout.
Step 2: Building the Guild Window using Unity’s UI (UGUI)
- Creating the Panel: In Unity, create a new UI Panel under the Canvas object. Name it
GuildPanel. Resize and anchor it to your preferred location, e.g., left side of the screen. - Setting Up the Title Bar: Add a
TitlePanelprefab to display the guild name and a close button. - Message of the Day Section: Create a
MotdPanelfor displaying the guild’s MOTD. Include a Text object to dynamically display the message. - Member List Headers: Add a
HeaderPanelabove the member list for headers like ‘Name’, ‘Rank’, and ‘Level’. - Creating the Member List: Implement a scrollable member list using Unity’s Scroll Rect and Mask components. Include a grid layout inside the
MemberListpanel. - Scrollbar: Add a scrollbar to the side of the
MemberListto allow scrolling through the member list. - Action Buttons Panel: Create a
ButtonsPanelat the bottom with buttons for actions like adding members or accessing guild settings.
Step 3: Creating the GuildMemberEntry Prefab and Script
- GuildMemberEntry Prefab: Create a
GuildMemberEntryprefab that will represent each member in the member list. It should include Text objects for the member’s name, rank, and level. - GuildMemberEntry Script: Write a script (
UGUIGuildMemberEntry.cs) for this prefab. The script should include public Text variables for each member attribute and a method to set these details (SetGuildMemberDetails).
Step 4: Creating the Guild Panel Script
- GuildPanel Script: Create a new C# script (
UGUIGuildPanel.cs). This script will manage the Guild Panel’s overall functionality. - Implementing UIList: Make the
UGUIGuildPanelscript inherit fromUIListand implement required methods likeNumberOfCellsandUpdateCell. - Additional Functions: Include functions for updating guild details, handling UI events, showing/hiding the panel, and toggling visibility.
- Handling Key Presses: Add a public KeyCode variable to handle toggling the guild panel visibility with a keyboard shortcut.
- Adding to Unity: Attach this script to the
GuildPanelGameObject and set up the necessary references (e.g., title bar, MOTD text field).
Step 5: Inviting Members to the Guild
- Invite Request Functionality: Implement a function in
UGUIGuildPanelto handle the invite member action. It should send an invite request to the server with the targeted player’s OID or name. - Handling Server Invite: On the server side, update the
GuildCommandHookto process invite commands. Create a method inGuild.java(inviteNewMember) to handle the invitation logic. - Client-side Invite Handling: In Unity, write a message handler (
HandleGuildInvite) inAtavismGuildto display a confirmation box when an invite is received. - Response Handling on the Server: Implement the
GuildInviteResponseHookon the server to process the player’s response to the invitation.
By following these steps, you’ll have a functional guild system in Atavism with a comprehensive UI for guild management. This system allows players to create guilds, manage members, and handle invitations seamlessly.
