Search Unity

Necromancer GUI Skin

Discussion in 'Immediate Mode GUI (IMGUI)' started by Kolgrima, Mar 2, 2011.

  1. Kolgrima

    Kolgrima

    Joined:
    Feb 2, 2009
    Posts:
    40



    This started as a question... How flexible is the built in GUI in unity? The answer... pretty damn flexible! At first I wasn’t so sure; it seemed no one ever used it to make a non OS style GUI at least not a publicly available one. So I decided I couldn’t be sure until I tried to develop a full GUI, Long story short Necromancer was the result and is now available to the general public, free for comercial and non-comercial use. I only ask that if you add something, Share it. Credits to Kevin King for the fonts.

    Necormancer GUI is on the AssetStore!

    LINKS UPDATED!
    NecromancerGUI Unitypackage
    Source files and more info here

    Cheers
     
    Last edited: Jan 23, 2015
  2. Discord

    Discord

    Joined:
    Mar 19, 2009
    Posts:
    1,008
    This looks great! I will definitely have to check this out and see how you did a couple things. Thanks!

    Edit: When I try to download the .psd source files, it says that the .zip archive is invalid.
     
    Last edited: Mar 2, 2011
  3. jedy

    jedy

    Joined:
    Aug 1, 2010
    Posts:
    579
    Looks fantastic! I would definitely love to mess with it a bit!

    @Discord Doesn't work for me too.
     
  4. afalk

    afalk

    Joined:
    Jun 21, 2010
    Posts:
    164
    Looks terrific ! I'll d/l it this afternoon and give it a try.
     
  5. shabazzster

    shabazzster

    Joined:
    Mar 17, 2010
    Posts:
    104
    This is gorgeous! I will have to check this one out thanks a bunch!
     
  6. Kolgrima

    Kolgrima

    Joined:
    Feb 2, 2009
    Posts:
    40
    Ah yes the file is indeed corrupt, it should be 15mb I'll have to fix this when I get home... Thanks for the heads up.


    Fixed Confirmed... source file zip should now work!
     
    Last edited: Mar 2, 2011
  7. Discord

    Discord

    Joined:
    Mar 19, 2009
    Posts:
    1,008
    Perfect, thanks!
     
  8. Eirikir

    Eirikir

    Joined:
    Mar 6, 2011
    Posts:
    11
    Thanks for this awesome skin. A problem though...

    When unpacking the .zip for the package, it does not remain as a unity package, but quickly transforms into a folder hierarchy. Anyone else get this?

    EDIT: nvm.. got it working using WinRAR :)
     
    Last edited: Mar 6, 2011
  9. radio3d

    radio3d

    Joined:
    Feb 22, 2010
    Posts:
    28
    This looks totally awesome!
    Didnt tried it yet but looks beautiful

    downloading.... :)
     
  10. Heartless49

    Heartless49

    Joined:
    Jan 21, 2011
    Posts:
    40
    I have to agree with everyone else, this is amazing. Ill take a look at it later tonight, I want to see how you got this working, Cuz I've always wondered how flexible it was but haven't gotten to the point that I need something like this to actually work on it... but now that you're showing us this, I really want to look at it.

    Thanks dude, xD
    Great job, BTW.
     
  11. Tom163

    Tom163

    Joined:
    Nov 30, 2007
    Posts:
    1,290
    This is fantastic, and giving it to the community is a very generous move.

    I do hope it inspires more people to create GUI skins. This is one area where Unity is lacking so severely that it hurts. I would pay good money for a skin, but whenever I've needed one, I had to use one of the three Unity Technologies provides and modify it. Needless to say, as I'm no artist, the results are... acceptable at best.
     
  12. pinkhair

    pinkhair

    Joined:
    Dec 17, 2010
    Posts:
    141
    That is really something!
     
  13. Fuzzbling

    Fuzzbling

    Joined:
    Mar 3, 2011
    Posts:
    3
    Epic! Thanks a ton!
     
  14. Scoppio

    Scoppio

    Joined:
    Feb 21, 2011
    Posts:
    46
    Itw awesome, simply perfect, but there is one small weird thing, the text boxes aren't receiving keyboard inputs, its probably because I'm newbie in Unity, but so if thats the case, can someone point how to make it works?
     
  15. Kolgrima

    Kolgrima

    Joined:
    Feb 2, 2009
    Posts:
    40
    I didn't script it to actually work if you want get it to except input you need to replace this block of code;

    Code (csharp):
    1. //Old
    2. function DoMyWindow0 (windowID : int)
    3. {
    4.     // use the spike function to add the spikes
    5.     // note: were passing the width of the window to the function
    6.         AddSpikes(windowRect0.width);
    7.  
    8.         GUILayout.BeginVertical();
    9.         GUILayout.Space(8);
    10.         GUILayout.Label("", "Divider");//-------------------------------- custom
    11.                 GUILayout.Label("Standard Label");
    12.         GUILayout.Label("Short Label", "ShortLabel");//-------------------------------- custom
    13.         GUILayout.Label("", "Divider");//-------------------------------- custom
    14.         GUILayout.Button("Standard Button");
    15.         GUILayout.Button("Short Button", "ShortButton");//-------------------------------- custom
    16.         GUILayout.Label("", "Divider");//-------------------------------- custom
    17.         ToggleBTN = GUILayout.Toggle(ToggleBTN, "This is a Toggle Button");
    18.         GUILayout.Label("", "Divider");//-------------------------------- custom
    19.         GUILayout.Box("This is a textbox\n this can be expanded by using \\n");
    20.         [COLOR="red"]GUILayout.TextField("This is a textfield\n You cant see this text!!");
    21.                 GUILayout.TextArea("This is a textArea\n this can be expanded by using \\n");[/COLOR]
    22.             GUILayout.EndVertical();
    23.        
    24.         // Make the windows be draggable.
    25.         GUI.DragWindow (Rect (0,0,10000,10000));
    26. }
    with this

    Code (csharp):
    1. //Update
    2. [COLOR="green"]private var strTF = "This is a textfield";
    3. private var strTA = "This is a textArea\n this can be expanded by using \\n";[/COLOR]
    4.  
    5. function DoMyWindow0 (windowID : int)
    6. {
    7.     // use the spike function to add the spikes
    8.     // note: were passing the width of the window to the function
    9.         AddSpikes(windowRect0.width);
    10.  
    11.         GUILayout.BeginVertical();
    12.         GUILayout.Space(8);
    13.         GUILayout.Label("", "Divider");//-------------------------------- custom
    14.                 GUILayout.Label("Standard Label");
    15.         GUILayout.Label("Short Label", "ShortLabel");//-------------------------------- custom
    16.         GUILayout.Label("", "Divider");//-------------------------------- custom
    17.         GUILayout.Button("Standard Button");
    18.         GUILayout.Button("Short Button", "ShortButton");//-------------------------------- custom
    19.         GUILayout.Label("", "Divider");//-------------------------------- custom
    20.         ToggleBTN = GUILayout.Toggle(ToggleBTN, "This is a Toggle Button");
    21.         GUILayout.Label("", "Divider");//-------------------------------- custom
    22.         GUILayout.Box("This is a textbox\n this can be expanded by using \\n");
    23.         [COLOR="green"]strTF = GUILayout.TextField(strTF, 40);
    24.                 strTA = GUILayout.TextArea(strTA, 60);[/COLOR]
    25.         GUILayout.EndVertical();
    26.        
    27.         // Make the windows be draggable.
    28.         GUI.DragWindow (Rect (0,0,10000,10000));
    29. }
    I’ve added this to the test script, so it will be in my next update of the package as well.
     
  16. Scoppio

    Scoppio

    Joined:
    Feb 21, 2011
    Posts:
    46
    Thanks Kolgrima, I realised that just a few hours later (totally inexperient with the unity3D engine), well, i didn't realised alone, I asked help for a friend and he shouted - "Did you remembered to set a string to the textfield?!"

    Anyway, thanks again, its working just perfectly, except by one small bug which I found a workaround:

    - I've set a var textTest = ""; and then made it textTest = GUILayout.TextField(textTest, 40); it looked ok.
    - I run the "play test" so I could see the results, and for my amusement, there was only a window/box but nothing inside, the debugger said there was an error while painting/drawing the GUI
    - then I set the var to var textTeste : String = ""; and hit "play the test game", it worked perfectly.
     
  17. forest_linshs

    forest_linshs

    Joined:
    Jan 6, 2010
    Posts:
    39
    It's wonderful. Thanks for share!
     
  18. afalk

    afalk

    Joined:
    Jun 21, 2010
    Posts:
    164
    Loving thsi GUI Skin -- beautifully done, and a great proof of what's possible w/Unity Gui! Thanks for sharing it!
     
  19. Qvist

    Qvist

    Joined:
    Dec 2, 2010
    Posts:
    76
    This is awesome!
     
  20. LuxUnity

    LuxUnity

    Joined:
    Sep 29, 2010
    Posts:
    717
    Very good! Thanks!
     
  21. rmele09

    rmele09

    Joined:
    Nov 8, 2010
    Posts:
    713
    Can you use this skin for the game lobby of an online matchmaking game?
     
  22. Kolgrima

    Kolgrima

    Joined:
    Feb 2, 2009
    Posts:
    40
    Sure why not? It’s free to use for whatever your making.
     
  23. thesimi

    thesimi

    Joined:
    Jun 16, 2009
    Posts:
    94
    nice:D
    you so have to add this to the asset store (I dont know if you allready have, I havent checked there for a while:p)
     
  24. Kolgrima

    Kolgrima

    Joined:
    Feb 2, 2009
    Posts:
    40
  25. Mr.kylle

    Mr.kylle

    Joined:
    Sep 18, 2010
    Posts:
    43
    Nice GUI :)
     
  26. iisjreg

    iisjreg

    Joined:
    Mar 25, 2011
    Posts:
    101
    This is so awesome.

    Now I know you've released this for free and that's brilliant, but a step-by-step would make me all GUI. (sorry pun police, long day)
    Maybe I'll think about doing a tut.
     
  27. Kolgrima

    Kolgrima

    Joined:
    Feb 2, 2009
    Posts:
    40
    A step by step guide for creating a GUI or creating the art?
     
  28. Josh_Amsterdam

    Josh_Amsterdam

    Joined:
    Feb 22, 2011
    Posts:
    68
    Amazing! Thanks for freely sharing this. Great quality and easily adaptable! Thanks a lot!
     
  29. Deleted User

    Deleted User

    Guest

    A step by step guide for creating a GUI. :D that would be great ! I always had a problem with the GUI.
     
  30. vahi2008

    vahi2008

    Joined:
    Oct 1, 2010
    Posts:
    321
    Necromancer GUI Unitypackage, not working , whats wrong i am doing ?
    Posted: 11:14 PM 11 Minutes Ago

    i simply imported the package, made a simple GUI form script, attached to an object...but the skin is not coming for me, see the link below...what do i need to do ??

    how to use it ??

    http://www.image-share.com/ijpg-741-46.html
     
  31. Deleted User

    Deleted User

    Guest

  32. shinriyo_twitter

    shinriyo_twitter

    Joined:
    Aug 12, 2011
    Posts:
    328
  33. taragon

    taragon

    Joined:
    Jan 23, 2010
    Posts:
    119
    I'm working on integrating this with a player and NPC system where the GUI pops up when the player gets closer to the NPC. I have a few questions however as far as how I can make this work:

    1. How would I link the GUI to the NPC? For instance, the NPC may ask the player for loot the first time around, however the next time around might be a different question. How can I vary the questions?

    2. How can I vary the size of the GUI windows? They are quite large, however varying just the size won't work since the images don't comply.
     
    Last edited: Sep 12, 2011
  34. Kylotan

    Kylotan

    Joined:
    Feb 17, 2011
    Posts:
    212
    Looks good, but It doesn't really work for me. Simple buttons are fine but I have lots of dynamically-sized windows using GUILayout and I think the extra decoration on the labels makes the text not fit, extending the box downwards and taking up too much vertical room. I'd love to see a version or a modification that didn't require so much space for simple elements.
     
  35. enyllief

    enyllief

    Joined:
    Oct 17, 2010
    Posts:
    36
  36. dkozar

    dkozar

    Joined:
    Nov 30, 2009
    Posts:
    1,410
    @Kolgrima I used your Necromancer skin in this video tutorial, check it out:



    Great skin and powerful example of GUI customization!! :)
     
  37. mutsop

    mutsop

    Joined:
    Dec 23, 2012
    Posts:
    3
    Hi,

    Sorry to bring up an old thread. But I have an issue opening the asset store in Unity4 (it crashes constantly) and have followed several fixes without success. Finally through google I found this thread with a link to a package which could be imported... Problem is, the link is not working anymore neither is the source.

    Is it possible for anyone to bring this back up?

    Thanks in advance
    Peter
     
  38. HamadMMX

    HamadMMX

    Joined:
    Dec 24, 2012
    Posts:
    11
    it looks wonderful!
     
  39. mutsop

    mutsop

    Joined:
    Dec 23, 2012
    Posts:
    3
    Still hoping for a solution...
     
  40. mutsop

    mutsop

    Joined:
    Dec 23, 2012
    Posts:
    3
    Does anyone still have this as an import package? As stated in my previous post I can't access the in-app store cause of crashes.

    thanks
     
  41. dkozar

    dkozar

    Joined:
    Nov 30, 2009
    Posts:
    1,410
    Did you try to get @Kolgrima and ask him?

    I found the package on my disk, but don't know if I am allowed to attach it online. I guess I need to have his permission.
     
  42. EvansGreen

    EvansGreen

    Joined:
    Nov 9, 2012
    Posts:
    129
    Kudos @Kolgrima for sharing this with the commUnity!
     
  43. Graham42

    Graham42

    Joined:
    Jan 12, 2013
    Posts:
    2
    If i want to use this in my game what free license can i reference? Most free things use some kind of Creative Commons license from https://creativecommons.org . I've already added "Ironbound Studios" to the credits but I'd like to reference some kind of cc licence. Thank you!
     
  44. Deleted User

    Deleted User

    Guest

    If you got the package on the Asset Store, then by default it's covered by the Unity EULA - this link http://unity3d.com/company/legal/as_terms is at the bottom of http://assetstore.unity3d.com/
     
  45. vegenarie

    vegenarie

    Joined:
    Jan 5, 2011
    Posts:
    287
    I am using GUILayout.TextField and i cant type anything
     
  46. vegenarie

    vegenarie

    Joined:
    Jan 5, 2011
    Posts:
    287
    I readed the output log of the build and i found many messages like this

    Unable to find style 'Skull' in skin 'GameSkin' Layout
    UnityEngine.Debug:Internal_Log(Int32, String, Object)
    UnityEngine.Debug:LogWarning(Object)
    UnityEngine.GUISkin:GetStyle(String)
    UnityEngine.GUIStyle:eek:p_Implicit(String)
    GUITestScript:FancyTop(Single) (at C:\wamp\www\newageofmagicunity\Unity\Cliente\Assets\Necromancer GUI\GUITestScript.cs:128)
    GUITestScript:DoMyWindowPersonaje(Int32) (at C:\wamp\www\newageofmagicunity\Unity\Cliente\Assets\Necromancer GUI\GUITestScript.cs:292)
    UnityEngine.GUI:CallWindowDelegate(WindowFunction, Int32, GUISkin, Int32, Single, Single, GUIStyle)
     
  47. Yukichu

    Yukichu

    Joined:
    Apr 2, 2013
    Posts:
    420
    I used a few pieces of this. Very nice. I appreciate you releasing your hard work others to use.
     
  48. vasanth

    vasanth

    Joined:
    Dec 18, 2012
    Posts:
    4
    Hi ,
    I used this Skin for my game. it is good to use and very simple. but struck with GUILayout.RepeatButton which is not working properly , i mean it works like GUILayout.Button. how can i use repeatbutton function. please help me
     
  49. Mitchell Ransom

    Mitchell Ransom

    Joined:
    Aug 13, 2013
    Posts:
    8
    Hi,

    I've been experimenting with this GUI and I love it! However, when trying to compile my game for Windows Phone I am getting a lot of errors. It's strange because the exact same script is compiling perfectly for Web Player and Windows Standalone and when playing the game it works perfectly, but when I try to build for Windows Phone all the compiler errors show up.

    Here's the script I'm testing with;

    Code (csharp):
    1.  
    2. /*
    3. Necromancer GUI Demo Script
    4. Author: Jason Wentzel
    5. jc_wentzel@ironboundstudios.com
    6.  
    7. In this script you'll find some handy little functions for some of the
    8. Custom elements in the skin, these should help you create your own;
    9.  
    10. AddSpikes (not perfect but works well enough if you’re careful with your window widths)
    11. FancyTop (just an example of using the elements to do a centered header graphic)
    12. WaxSeal (adds the waxseal and ribbon to the right of the window)
    13. DeathBadge (adds the iconFrame, skull, and ribbon elements properly aligned)
    14.  
    15. */
    16.  
    17. var doWindow3 = true;
    18. private var levelTime = 0;
    19. private var gold = 0;
    20. private var nextLevel = "";
    21.  
    22. private var leafOffset;
    23. private var frameOffset;
    24. private var skullOffset;
    25.  
    26. private var RibbonOffsetX;
    27. private var FrameOffsetX;
    28. private var SkullOffsetX;
    29. private var RibbonOffsetY;
    30. private var FrameOffsetY;
    31. private var SkullOffsetY;
    32.  
    33. private var WSwaxOffsetX;
    34. private var WSwaxOffsetY;
    35. private var WSribbonOffsetX;
    36. private var WSribbonOffsetY;
    37.    
    38. private var spikeCount;
    39.  
    40. // This script will only work with the Necromancer skin
    41. var mySkin : GUISkin;
    42.  
    43. //if you're using the spikes you'll need to find sizes that work well with them these are a few...
    44. private var windowRect0 = Rect (500, 140, 350, 510);
    45. private var windowRect1 = Rect (380, 40, 262, 420);
    46. private var windowRect2 = Rect (700, 40, 306, 480);
    47. private var windowRect3 = Rect (0, 40, 350, 500);
    48.  
    49. private var scrollPosition : Vector2;
    50. private var HroizSliderValue = 0.5;
    51. private var VertSliderValue = 0.5;
    52. private var ToggleBTN = false;
    53.  
    54. //skin info
    55. private var NecroText ="This started as a question... How flexible is the built in GUI in unity? The answer... pretty damn flexible! At first I wasn’t so sure; it seemed no one ever used it to make a non OS style GUI at least not a publicly available one. So I decided I couldn’t be sure until I tried to develop a full GUI, Long story short Necromancer was the result and is now available to the general public, free for comercial and non-comercial use. I only ask that if you add something Share it.   Credits to Kevin King for the fonts.";
    56.  
    57.  
    58. function AddSpikes(winX)
    59. {
    60.     spikeCount = Mathf.Floor(winX - 152)/22;
    61.     GUILayout.BeginHorizontal();
    62.     GUILayout.Label ("", "SpikeLeft");//-------------------------------- custom
    63.     for (i = 0; i < spikeCount; i++)
    64.         {
    65.             GUILayout.Label ("", "SpikeMid");//-------------------------------- custom
    66.         }
    67.     GUILayout.Label ("", "SpikeRight");//-------------------------------- custom
    68.     GUILayout.EndHorizontal();
    69. }
    70.  
    71. function FancyTop(topX)
    72. {
    73.     leafOffset = (topX/2)-64;
    74.     frameOffset = (topX/2)-27;
    75.     skullOffset = (topX/2)-20;
    76.     GUI.Label(new Rect(leafOffset, 18, 0, 0), "", "GoldLeaf");//-------------------------------- custom
    77.     GUI.Label(new Rect(frameOffset, 3, 0, 0), "", "IconFrame");//-------------------------------- custom   
    78.     GUI.Label(new Rect(skullOffset, 12, 0, 0), "", "Skull");//-------------------------------- custom  
    79. }
    80.  
    81. function WaxSeal(x,y)
    82. {
    83.     WSwaxOffsetX = x - 120;
    84.     WSwaxOffsetY = y - 115;
    85.     WSribbonOffsetX = x - 114;
    86.     WSribbonOffsetY = y - 83;
    87.    
    88.     GUI.Label(new Rect(WSribbonOffsetX, WSribbonOffsetY, 0, 0), "", "RibbonBlue");//-------------------------------- custom
    89.     GUI.Label(new Rect(WSwaxOffsetX, WSwaxOffsetY, 0, 0), "", "WaxSeal");//-------------------------------- custom 
    90. }
    91.  
    92. function DeathBadge(x,y)
    93. {
    94.     RibbonOffsetX = x;
    95.     FrameOffsetX = x+3;
    96.     SkullOffsetX = x+10;
    97.     RibbonOffsetY = y+22;
    98.     FrameOffsetY = y;
    99.     SkullOffsetY = y+9;
    100.    
    101.     GUI.Label(new Rect(RibbonOffsetX, RibbonOffsetY, 0, 0), "", "RibbonRed");//-------------------------------- custom 
    102.     GUI.Label(new Rect(FrameOffsetX, FrameOffsetY, 0, 0), "", "IconFrame");//-------------------------------- custom   
    103.     GUI.Label(new Rect(SkullOffsetX, SkullOffsetY, 0, 0), "", "Skull");//-------------------------------- custom   
    104. }
    105.  
    106. //bringing it all together
    107. function DoMyWindow3 (windowID : int)
    108. {
    109.         // use the spike function to add the spikes
    110.         AddSpikes(windowRect3.width);
    111.        
    112.         //add a fancy top using the fancy top function
    113.         FancyTop(windowRect0.width);
    114.  
    115.         GUILayout.Space(8);
    116.         GUILayout.BeginVertical();
    117.         GUILayout.Label("Level Complete");
    118.         GUILayout.Label ("", "Divider");
    119.         GUILayout.Label ("Congratulations, you showed great courage to make it out alive!", "LightText");
    120.         GUILayout.Label ("", "Divider");
    121.         GUILayout.Label("Score");
    122.         GUILayout.Label ("", "Divider");
    123.         GUILayout.Label ("Time: " + levelTime, "LightText");
    124.         GUILayout.Label ("Gold: " + gold, "LightText");
    125.         GUILayout.Label ("", "Divider");
    126.         GUILayout.Space(8);
    127.         if (GUILayout.Button("Next Level")) {
    128.             Application.LoadLevel(nextLevel);
    129.         }
    130.         if (GUILayout.Button("Main Menu")) {
    131.             Application.LoadLevel("Main_Menu");
    132.         }
    133.         if (GUILayout.Button("Exit")) {
    134.             Application.Quit();
    135.         }
    136.         GUILayout.Space(8);
    137.         GUILayout.Label ("", "Divider");
    138.         GUILayout.EndVertical();
    139.        
    140.         GUI.DragWindow (Rect (0,0,10000,10000));
    141. }
    142.  
    143. function Start () {
    144.     nextLevel = PlayerPrefs.GetString("nextLevel");
    145.     gold = PlayerPrefs.GetInt("coins");
    146.     levelTime = PlayerPrefs.GetFloat("levelTime");
    147. }
    148.  
    149. function OnGUI ()
    150. {
    151.     GUI.skin = mySkin;
    152.     if (doWindow3)
    153.         windowRect3 = GUI.Window (3, windowRect3, DoMyWindow3, "");
    154.         //now adjust to the group. (0,0) is the topleft corner of the group.
    155.         GUI.BeginGroup (Rect (0,0,100,100));
    156.         // End the group we started above. This is very important to remember!
    157.         GUI.EndGroup ();
    158. }
    159.  
    And here are a few of the errors coming up, they are just repeated for different lines in the script so no need to paste them all;
    Code (csharp):
    1.  
    2. Assets/Necromancer GUI/GUICompletedLevel.js(72,27): BCE0051: Operator '/' cannot be used with a left hand side of type 'Object' and a right hand side of type 'int'.
    3. Assets/Necromancer GUI/GUICompletedLevel.js(82,26): BCE0051: Operator '-' cannot be used with a left hand side of type 'Object' and a right hand side of type 'int'.
    4. Assets/Necromancer GUI/GUICompletedLevel.js(94,25): BCE0051: Operator '+' cannot be used with a left hand side of type 'Object' and a right hand side of type 'int'.
    5.  
    I've been trying all day to solve the errors, but even when passing integers to the specific functions (such as: FancyTop(350);) the errors still persist. Does anyone have any ideas and/or solutions to this? Still not understanding why no errors show on Web Player and Windows Standalone, it doesn't make much sense to me!

    Thanks!

    Kind regards,
    Mitchell Ransom
     
  50. seansteezy

    seansteezy

    Joined:
    Nov 28, 2013
    Posts:
    122
    I also get those errors when compiling for Android, so it must be mobile, but I try to type the vars and then I get some weird token exception error. WTF is wrong with this?