当前位置:网站首页>Fairygui character status Popup

Fairygui character status Popup

2022-07-06 12:42:00 SQ Liu

FairyGUI Character status popup

One 、 New packages and components

 Insert picture description here
 Insert picture description here
 Insert picture description here
 Insert picture description here

Two 、 Import material

Click here to download the material

3、 ... and 、 Making the main interface

 The main interface is a simple avatar button 

1、 The new button

 Insert picture description here
 Insert picture description here

2、 Double click in Button Components , Set a zoom for it , Let it zoom when it is pressed , Then drag the sound material in , It works better .

 Insert picture description here
 Insert picture description here

3、 Drag the button into Main Components

 Insert picture description here

4、 Making pop-up windows

(1) First of all, there should be a container assembly with pop-up windows
 Insert picture description here
 Insert picture description here
(2) Set window background (408×436), take PlayerWindow The size is also set to 408×436.
 Insert picture description here

5、 Make a window frame

(1) New component Windowframe

 Insert picture description here
 Insert picture description here

(2) to Windowframe Add background
 You can make the background directly in the framework , So you can delete the following background picture .

 Insert picture description here
 Insert picture description here

(3) New close button

 Insert picture description here
 Insert picture description here
 Insert picture description here

(4) Make frame drag area
 The window frame also needs a drag and drop area , That is, when players click on this area , The whole window will move according to the player's mouse .

 Insert picture description here
Rename the drawing to dragArea, This is the official name !!!
 Insert picture description here
Rename the close button , Convenient for later operation .
 Insert picture description here

(5) Add background image , Make it look less monotonous

 Insert picture description here
The window frame is finished !

6、 go back to PlayerWindow, Drag into the window frame

 Insert picture description here

7、 Set graphic placeholder

 The player is a 3D object , So we should put 3D The object shines on a UI On , Then take this UI Displayed on our window . Then we need to use Texture, Load the content illuminated by the camera . So there needs to be a placeholder , So we drag a graph here .

 Insert picture description here

8、 The new button

After the characters are loaded , It also needs to have a rotation and other dynamics , So you need to add buttons to make the characters twist .
 Insert picture description here
 Insert picture description here
 Insert picture description here
 Insert picture description here

Four 、Unity Preparatory work

1、 First, import. player.unitypackage Resource Pack

 Insert picture description here

2、 take npc Drag into the scene

 We don't want the characters to show , That is, we don't want the characters to have any connection with the game scene interface . So set his position far away , We just want him to make a rendered picture dynamically , This model is not needed .

 Insert picture description here
 Insert picture description here

3、 Create a new camera to render people

 Insert picture description here
Choose Camera Focus
 Insert picture description here
Because only one layer of the game object is rendered , So treat him as UI Layer to render , So you need to add a label .
 Insert picture description here
 Insert picture description here
 Insert picture description here

4、 establish Render Texture

Rename it to PlayerRT
 Insert picture description here
 Insert picture description here
 Insert picture description here

5、 Create a shader

(1) Rename it to PlayerMat
 Insert picture description here
(2) Assign the material to Material
 Insert picture description here
(3) Set its Shader
 Insert picture description here
Later, you only need to load PlayerMat and PlayerRT You can render ! Come here , All the preparations are almost done , Then just put in FairyGUI Make a package of resources in .

5、 ... and 、 Packaging releases

 Insert picture description here
 Insert picture description here

*****FairyGUI Strange phenomenon of release failure *****

 At this time, you will be prompted that publishing failed , As shown in the figure above . What's the reason ? This problem has been perplexed for a long time , How did I solve it ? I created a new project again , When importing qtm01d.swf When it comes to resources , Found the problem . Turned out to be qtm01d.swf In the way . So we can take two approaches : One 、 Directly remove the click sound effect ; Two 、 Find another click sound resource by yourself , No material given , Toxic , ha-ha . I am lazy , Delete it directly .

 Insert picture description here
Republish again , Problem solved .
 Insert picture description here
 Insert picture description here

6、 ... and 、Unity It shows that

 Insert picture description here
UI Panel Rename it to PlayerView
 Insert picture description here

7、 ... and 、 Coding control

1、 Create two new scripts

The first is the main script that controls the display PlayerView;
The second is the pop-up script PlayerWindow.

 Insert picture description here

2、 Edit script

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using FairyGUI;

public class PlayerView : MonoBehaviour
{
    
    private GComponent mainUI;
    private PlayerWindow playerWindow;
    public GameObject player;
    void Start()
    {
    
        mainUI = GetComponent<UIPanel>().ui;
        playerWindow = new PlayerWindow(player);
        mainUI.GetChild("n0").onClick.Add(() => {
     playerWindow.Show(); });
    }

    // Update is called once per frame
    void Update()
    {
    
        
    }
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using FairyGUI;

public class PlayerWindow : Window
{
    
    private GameObject player;
    public PlayerWindow(GameObject player)
    {
    
        this.player = player;
    }
    
    protected override void OnInit()
    {
    
        this.contentPane = UIPackage.CreateObject("PlayerView", "PlayerWindow").asCom;
        GGraph holder = contentPane.GetChild("n2").asGraph;
        RenderTexture renderTexture = Resources.Load<RenderTexture>("FGUI/PlayerView/PlayerRT");
        Material mat = Resources.Load<Material>("FGUI/PlayerView/PlayerMat");
        Image img = new Image();
        img.texture = new NTexture(renderTexture);
        img.material = mat;
        holder.SetNativeObject(img);
    }
}

 Insert picture description here

3、 Running effect

 Insert picture description here
But found , Click on the × There is no response , Explain that there are still some problems .
go back to FairyGUI, Return to the window frame PlayerWindow in , Find out ButtonClose Displayed at the top , Because of our UI The display of has strict requirements on this depth . So we put this × The button of is rendered at the bottom .

 Insert picture description here

4、 Re release , There is no problem after running

 Insert picture description here

5、 Rotate the character left and right

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using FairyGUI;

public class PlayerWindow : Window
{
    
    private GameObject player;
    public PlayerWindow(GameObject player)
    {
    
        this.player = player;
    }
    
    protected override void OnInit()
    {
    
        this.contentPane = UIPackage.CreateObject("PlayerView", "PlayerWindow").asCom;
        GGraph holder = contentPane.GetChild("n2").asGraph;
        RenderTexture renderTexture = Resources.Load<RenderTexture>("FGUI/PlayerView/PlayerRT");
        Material mat = Resources.Load<Material>("FGUI/PlayerView/PlayerMat");
        Image img = new Image();
        img.texture = new NTexture(renderTexture);
        img.material = mat;
        holder.SetNativeObject(img);
        this.contentPane.GetChild("n3").onClick.Add(() => {
     RotateLeft(); });
        this.contentPane.GetChild("n4").onClick.Add(() => {
     RotateRight(); });
    }
    
    private void RotateLeft()
    {
    
        player.transform.Rotate(Vector3.up * 30, Space.World);
    }

    private void RotateRight()
    {
    
        player.transform.Rotate(Vector3.up * (-30), Space.World);
    }
}

 Insert picture description here

8、 ... and 、 Final effect

 Insert picture description here

原网站

版权声明
本文为[SQ Liu]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/187/202207060913597433.html