unity3d添加游戏对话框_unity3d 弹出对话框 - CSDN
精华内容
参与话题
  • Unity3d 制作聊天框

    2019-11-04 22:42:28
    在使用Unity3d开发一个简易的聊天程序时,需要在客户端显示聊天记录列表,做为一个初学者,开发这个功能具然快用了两天了。最后通过调一个参数解决了。这里记录一下,希望对新手有所帮助。 最终的显示效果是这样的:...

    在使用Unity3d开发一个简易的聊天程序时,需要在客户端显示聊天记录列表,做为一个初学者,开发这个功能具然快用了两天了。最后通过调一个参数解决了。这里记录一下,希望对新手有所帮助。
    最终的显示效果是这样的:
    在这里插入图片描述

    项目结构如图所示:
    在这里插入图片描述

    项目中的StartPanel是用来输入昵称和连接服务器用的,这里先不用管它。ChatPanel中实现了聊天历史列表记录和聊天消息的发送。
    开发步骤如下所示:

    添加ChatPanel,做为聊天内容管理的Panel界面。
    在ChatPanel下面添加聊天信息输入框ChatInputField
    在ChatPanel下面添加一个Scroll View ,它的参数面板如下所示:

    在这里插入图片描述
    给Scroll View->Viewport->Content添加Content Size Filter和Vertical Layout Group,参数如下所示:

    在这里插入图片描述
    然后添加如下脚本,这里的思路是每一条聊天记录都会动态加载到一个Text组件中,这方便处理不同组件显示的内容。

    // Update is called once per frame
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Return) || Input.GetKeyDown(KeyCode.KeypadEnter))
        {
            if (chatInput.text != "")
            {
                string username = Player.GetInstance().NickName;
                string addText = "\n  " + "<color=red>" + username + "</color>: " + chatInput.text;
                GameObject textShowPanel = showPannel.gameObject;
                GameObject chatTextArea = (GameObject)Instantiate(Resources.Load("ChatTextArea"));
                chatTextArea.transform.SetParent(textShowPanel.transform, false);
                
                Text text = chatTextArea.GetComponent<Text>();
                text.text = addText;
                chatInput.text = "";
                chatInput.ActivateInputField();
                //强制更新,如果滚动条显示了,让滚动条始终在最低下。
                Canvas.ForceUpdateCanvases();
                scrollRect.verticalNormalizedPosition = 0f;
                Canvas.ForceUpdateCanvases();
            }
        }
    }
    

    关注下面的公众号,获取源码
    在这里插入图片描述

    展开全文
  • 如何创建项目和添加游戏物体和组件Unity 3D 创建游戏的理念可以简单地理解为:一款完整的游戏就是一个项目(project),游戏中不同的关卡对应的是项目下的场景(scene)。一款游戏可以包含若干个关卡(场景),...

    如何创建项目和添加游戏物体和组件
    Unity 3D 创建游戏的理念可以简单地理解为:
    一款完整的游戏就是一个项目(project),游戏中不同的关卡对应的是项目下的场景(scene)。一款游戏可以包含若干个关卡(场景),因此一个项目下面可以保存多个场景。
    创建游戏物体
    选择 GameObject(游戏对象)→3D Object(三维物体)→Plane(平面)命令创建一个平面用于放置物体
    选择 GameObject(游戏对象)→3D Object(三维物体)→Cube(立方体)命令创建一个立方体
    添加游戏物体组件
    游戏物体组件可以通过 Inspector(属性编辑器)显示,这些组件还可以附加很多组件。

    例如要为 Cube(立方体)组件添加 Rigidbody(刚体)组件,选中 Cube,
    

    执行 Component(组件)→Physics(物理)→Rigidbody(刚体)菜单命令,为游戏物体 Cube 添

    加 Rigidbody 组件,项目保存执行 File(文件)→Save Scene(保存场景)菜单命令或按快捷键

    Ctrl+S,在弹出的保存场景对话框中输入要保存的文件名,此时在 Project(项目)面板中能够找到

    刚刚保存的场景。

    展开全文
  • unity弹出对话框的方式汇总

    万次阅读 多人点赞 2017-07-14 09:41:18
    unity 对话框的实现方式

    在做unity开发的过程中,我们经常会遇到使用提示框的情况,很多时候提示框是很好用的工具,我们习惯于使用window的messageBox显示提示信息,但是来到unity中我们发现unity并没有该弹框的API,当然有人会说UnityEditor.EditorUtility.DisplayDialog()方法不是吗,我不否认这是一个方法,但是这个只能在编辑器下显示,不能发布有什么用。其实要实现弹框,还有其他几种方式,,比如调用System.Windows.Forms.dll,,调用win32的系统方法,以及使用UGUI自己封装一个。但是前两种有局限性,只能在window平台下使用,第三种可以在任何平台下使用。
    一:System.Windows.Forms.dll的使用:
    System.Windows.Forms.dll要想在unity下使用,要先把System.Windows.Forms.dll放到unity的plugin文件下,这里存放了unity工程需要的DLL,注意System.Windows.Forms.dll需要是.net3.5以下的框架。该DLL可以在unity的安装目录下的Editor\Data\Mono\lib\mono\2.0\文件夹下找到。使用的方式也很简单,例如

    using UnityEngine;
    using System;
    using System.Windows.Forms;
    using winforms = System.Windows.Forms;
    public class test : MonoBehaviour
    {
     void Start()
    {
    MessageBox.Show("此设备故障!请及时检查!", this.GetType().Name, winforms.MessageBoxButtons.OK, winforms.MessageBoxIcon.Error);
    }
    }
    

    二:调用win32的系统方法
    该方法是调用win32的系统方法,主要实现过程如下:
    先创建一个类,

     public class Messagebox
        {
            [DllImport("User32.dll", SetLastError = true, ThrowOnUnmappableChar = true, CharSet = CharSet.Auto)]
            public static extern int MessageBox(IntPtr handle, String message, String title, int type);
        }
    

    然后调用该方法

    public class test : MonoBehaviour
    {
     void Start()
    {
       Messagebox.MessageBox(IntPtr.Zero,"还没有该场景!","xxx",0);
    }
    }
    

    效果图如下:
    这里写图片描述
    三:自己封装UGUI控件的方式。
    最终的实现效果如下:
    这里写图片描述
    弹出对话框时会给整个界面覆盖一层半透明遮罩,弹框的标题支持定制,中间的text文本框可以上下滚动以适应多内容输出。
    具体的实现如下:
    一:在Canvas下创建Image,修改名字为background,修改布局为填充父控件(Canvas),修改background的颜色和透明度以适应要求,当然也可以自己添加半透明图片。
    二:在background下创建image,修改大小为200,150,修改名字为MessageBox,在MessageBox下创建Title,长度为填充父物体,高度为25,stretch与父控件上方对齐,然后创建空物体,修改名字为Content,宽度为填充父控件,高度为100,给Content添加Mask遮罩组件。给Content添加Scroll Rect组件,Scroll Rect组件设置如下
    这里写图片描述
    在Content下创建Text,来显示要显示的内容。给text添加Content Size Fitter组件,修改Vertical Fit为Preferred Size来动态适应Text内容的多少。修改Pivot为(0.5,1),然后布局设置为Top,stretch如下:
    这里写图片描述
    在MessageBox下创建空物体,重命名为ButtonGroup.布局为与父控件下部对齐,tranform设置如下:
    这里写图片描述
    最后在ButtonGroup放置两个按钮。
    最终目录结构为
    这里写图片描述
    然后是代码的编写,这个过程分为三步,第一步,基本的控件逻辑,这个脚本挂载到MessageBox上,代码如下:

    using UnityEngine;
    using System.Collections;
    using UnityEngine.UI;
    using Common;
    
    public class UIMessage : MonoBehaviour {
        public Text Title;
        public Text Content;//这个是Content下的text
        public Button Sure;
        public Button Cancle;
        void Start()
        {
            Sure.onClick.AddListener(MessageBox.Sure);
            Cancle.onClick.AddListener(MessageBox.Cancle);
           Title.text =MessageBox.TitleStr;
           Content.text = MessageBox.ContentStr;
        }
    }
    

    然后绑定相应控件。
    第二步,编写MessageBox的实现类

    using UnityEngine;
    using System.Collections;
    namespace Common
    {
        public delegate void Confim();
        public class MessageBox 
        {
           static GameObject Messagebox;
           static int Result = -1;
            public static Confim confim;
            public static string TitleStr;
            public static string ContentStr;
            public static void Show(string content)
            {          
                ContentStr = "    " + content;
                Messagebox = (GameObject)Resources.Load("Prefab/Background");
                Messagebox= GameObject.Instantiate(Messagebox,GameObject.Find("Canvas").transform) as GameObject;
                Messagebox.transform.localScale = new Vector3(1, 1, 1);            
                Messagebox.GetComponent<RectTransform>().anchoredPosition = Vector3.zero;
                Messagebox.GetComponent<RectTransform>().offsetMin = Vector2.zero;
                Messagebox.GetComponent<RectTransform>().offsetMax = Vector2.zero;      
                Time.timeScale = 1;      
            }
            public static void Show(string title,string content)
            {
                TitleStr = title;
                ContentStr ="    "+ content;
                Messagebox = (GameObject)Resources.Load("Prefab/Background");
                Messagebox = GameObject.Instantiate(Messagebox, GameObject.Find("Canvas").transform) as GameObject;
                Messagebox.transform.localScale = new Vector3(1, 1, 1);
                Messagebox.GetComponent<RectTransform>().anchoredPosition = Vector3.zero;
                Messagebox.GetComponent<RectTransform>().offsetMin = Vector2.zero;
                Messagebox.GetComponent<RectTransform>().offsetMax = Vector2.zero;    
                Time.timeScale = 1;     
            }
            public static void Sure()
            {
                if (confim!= null)
                {
                    confim();
                    GameObject.Destroy(Messagebox);
                    TitleStr = "标题";
                    ContentStr = null;
                    Time.timeScale = 0;
                }
            }     
            public static void Cancle()
            {
                Result = 2;
                GameObject.Destroy(Messagebox);
                TitleStr = "标题";
                ContentStr = null;
                Time.timeScale = 0;
            }
        }
    }
    

    第三部:使用该MessageBox实现模态弹框。

    public void test()
        {
            MessageBox.Show("XXX窗口","输出了XXXX");
            MessageBox.confim=()=>{
            //这里写你自己点击确定按钮后的操作
                Debug.Log("shabile");
            };
        }
    

    最终效果如下:
    这里写图片描述

    展开全文
  • Unity UGUI制作对话框的设计方案

    千次阅读 2017-09-08 17:24:23
    游戏中会出现大量的弹出对话框UI,这部分功能虽然简单但是里面有很多细节需要注意 1、弹出的对话框UI要屏蔽触控,不能穿透UI到下层UI甚至3D对象上面 2、弹出框层级关系可能比较复杂,可能需要在一个弹框上覆盖另一个...


    游戏中会出现大量的弹出对话框UI,这部分功能虽然简单但是里面有很多细节需要注意

    1、弹出的对话框UI要屏蔽触控,不能穿透UI到下层UI甚至3D对象上面
    2、弹出框层级关系可能比较复杂,可能需要在一个弹框上覆盖另一个弹框,需要统一管理层级的逻辑
    3、弹出框的弹出优先级需要注意,比如网游,服务器呼叫客户端弹出对话框,这个对话框我们不希望它随便弹出,必须当前场景不存在对话框的时候再弹出,这就需要把这些服务器弹框做延迟或者缓存

    4、弹出框要响应android的物理返回,如果每一个对话框都单独去写这个逻辑就很麻烦,我们需要一个统一的入口解决这个问题


    针对以上问题我这里有一个解决方案:

    1、创建一个预设体模板,所有的对话框都以这个模板创建弹出对话框UI

    2、这个预设体模板的sortOrder是递增的,每一个弹出框在实例化的时候都保证永远在最上层,同时给这个预设体添加panel用来下层界面的UI触控

    3、把做好的弹框UI(必须以模板预设体为母体)拖入Resources下用来动态实例化

    4、预设体模板中绑定脚本,控制弹框的透明度、点击事件、自动关闭事件等方法,这个脚本不需要编辑。


    制作流程如下:

    1、拖拽弹框预设体到场景中,如图

    2、设置相应属性

    3、继续用UGUI制作这个界面,但是注意所有内容必须放在PanelContent下

    4、制作好UI之后拖入Resources/PopWinDialog/Prefabs/目录下当做预设体准备被程序动态加载

    5、最后调用这个弹框的时候调用接口:

    _PopWinManager.getInstance().PopWin("预设体的名字",autoCloseTime时间(可以不传这个参数))

    用这套弹框系统还是挺方便的!相关资源下载地址:

    http://download.csdn.net/download/jbl20078/9970288

    或者有需要直接评论回复邮箱地址





    展开全文
  • [Unity3D]Unity3D游戏开发之NPC对话系统的简单实现

    万次阅读 多人点赞 2014-05-05 19:07:44
     相信每一个喜欢RPG游戏的人,都会被PRG游戏中的剧情所打动吧。那么作为一部RPG,其剧情主要是靠人物间的对话串联起来的,玩家通过整合所有人物的对话信息来理解和把握整个故事的起因经过。所以从故事的角度来看,...
  • [Unity3D]Unity3D游戏开发之Unity与Android交互调用研究

    万次阅读 多人点赞 2014-10-02 09:59:53
    众所周知,Unity3D是一个强大的跨平台游戏引擎,和大多数喜欢Unity的朋友一样,博主在体验了Unity强大的跨平台能力后,被深深地震撼了,试想以前我们如果要开发一款游戏的话,我们需要对DX、OpenGL等图形库
  • Unity3D游戏引擎最详尽基础教程

    万次阅读 2018-06-27 15:23:06
    我一直向所有想做游戏的朋友推荐Unity3D,为什么呢?首先是因为专业,Unity3D非常强大,用它创建一个类似MiniGore这样的3D平面射击游戏简直轻而易举,而就连使命召唤这样的大型3d游戏,如果素材得当也不在话下。二是...
  • Unity3D是一个跨平台的游戏开发引擎,它能够帮助开发者快速构建游戏场景,进行游戏开发与发布。它支持将开发好的作品发布到Windows、Mac OS、Android、iOS、Linux等多种平台。另外,Unity3D官方版本目前可以运行在...
  • 各位朋友,大家好,我是秦元培,欢迎大家关注我的博客,我的博客地址是blog.csdn.net/qinyuanpei。...众所周知,Unity3D是一个强大的跨平台游戏引擎,和大多数喜欢Unity的朋友一样,博主在体验了Uni
  • Unity3D——人物对话UI制作

    千次阅读 2018-06-05 20:09:51
    这次作业其实难度没有之前巡逻兵...在场景中我们需要简单的天空盒,需要两个人物,也需要对话框。所以我在Asset Store中下载了如图中的两个资源包。 (2)Canvas 添加canvas,在下面添加两个button,如下所示...
  • 周末不想学习,就来玩一玩Unity3D好了。  本以为网上会有很多关于Unity3D的配置文章,但搜到的要么是iOS的,要么比较 坑爹,所以还是自己来写一篇。  环境:Windows 7 32bit Unity4。
  • Unity3d之多人游戏与网络(联机冰球对战)

    万次阅读 多人点赞 2018-06-24 10:10:48
    Unity3d之联机冰球对战 1. 游戏简介 一个简单的联机冰球对战小游戏,双方可在自己的视角分别控制 2. 效果 静态图 - 动态图 3. 预备知识——Unity网络编程相关组件 3.1 浅谈个人对多人游戏...
  • 1. 启用Unity3D新建一项目,在场景中新建两个空的GameObject对象,并分别命名为Connect和RobotControl,如图所示,Connect对象负责客户端与服务器端的脚本逻辑.在该场景中服务器也参与游戏的运行.RobotContr
  • Unity3D 游戏引擎之Unity3D回馈IOS高级界面消息 (十)

    万次阅读 热门讨论 2012-08-10 14:51:58
    Unity3D 游戏引擎之Unity3D回馈IOS高级界面消息雨松MOMO原创文章如转载,请注明:转载至我的独立域名博客雨松MOMO程序研究院,原文地址:http://www.xuanyusong.com/archives/521 上一章介绍了IOS高级界面向Unity3D ...
  • Unity 3D 入门 介绍
  • 今天博主想和大家探讨的是RPG游戏中剧情呈现的相关策略,我们知道一个RPG游戏主要是通过将玩家带入到游戏世界中进行某种“体验”进而影响角色的成长。这句话其实指出了RPG游戏的两个特点,即高度的代入感和角色的可...
  • Unity3D】Helloworld

    万次阅读 2017-04-24 10:22:40
    这个游戏引擎大名鼎鼎,容易学,能很快弄出很多好玩的游戏Unity3D有个好处,是兼容往下的版本。这一点起码比起隔壁的Cocos2dx好多了,Cocos2dx现在都不知道更到什么版本了,3.x只能用VS2012以上的版本玩就算了,还...
  • Unity实现RPG角色对话框

    千次阅读 2017-10-16 19:08:25
    因为打算制作一款RPG类的游戏demo,
  • 打开Unity3D软件,它会自动载入上一次我们打开过的“Bootcamp Demo”项目文件。不用管它,在软件打开之后点击 ——> ,在弹出的 对话框中找到 输入创建项目的文件夹地址,或者点击后面的 选择一个文件夹地址(注...
  • 扩展名项填写“.unity3d”,MIME类型项里填写"application/octet-stream"确定后一切问题全解决了。 还有人说要建个跨域文件。我没做也可以用。可能加上更好吧。方法是: 跨域文件:crossdom..
1 2 3 4 5 ... 20
收藏数 850
精华内容 340
关键字:

unity3d添加游戏对话框