精华内容
下载资源
问答
  • Fungus_v2.2.2Unity对话框插件,简单制作对话框逻辑。仅用于学习,请勿用于商业项目
  • unity制作对话框

    千次阅读 2020-01-15 10:40:34
    在我们平时玩的角色扮演的游戏中比如GTA等 其中少不了故事情节 不少是用对话框来表达的 这篇博客给大家介绍一下 简单的故事情节的讲述模式 一般的都时按下鼠标左键继续的 我的这个也一样 然后检测到鼠标左键的按下 ...

    最近在准备计算机设计大赛的游戏方向的比赛,研究一些游戏中的游戏效果的实现
    在我们平时玩的角色扮演的游戏中比如GTA等 其中少不了故事情节 不少是用对话框来表达的
    这篇博客给大家介绍一下 简单的故事情节的讲述模式
    一般的都时按下鼠标左键继续的
    我的这个也一样
    在这里插入图片描述
    然后检测到鼠标左键的按下 进行下一步

    而且用到打字机的效果实现 如果不清楚的可以去前面我的博客查看
    因为添加了打字的效果 代码稍微麻烦一点
    而且刚开始我也走了弯路 尝试在代码中用ui来实现语句的切换

    然后我发现利用数组可以很简单的实现 效果也很好

    代码块

    public float charsPerSecond = 0.2f;//打字时间间隔
        private string[] words = {"欢迎来到我的对话框","接下来给大家看一下","快要结束了哦" };
        //保存需要显示的文字 我这里面是三句
        public int strindex = 0;//控制语句
    
        private bool isActive = false;
        private float timer;//计时器
        private Text myText;
        public int currentPos = 0;//当前打字位置
    
        void Start()
        {
            timer = 0;
            isActive = true;
            myText = GetComponent<Text>();
        }
        void Update()
        {
            OnStartWriter();
            if (Input.GetMouseButtonDown(0))
            {
                strindex++;//下一句
                isActive = true;
                if (strindex >= 2)//防止超出数组的长度报错
                {
                    strindex = 2;
                }
            }
        }
    
        public void StartEffect()
        {
            isActive = true;
        }
        /// 执行打字任务
        void OnStartWriter()
        {
            if (isActive)
            {
                timer += Time.deltaTime;
                if (timer >= charsPerSecond)
                {//判断计时器时间是否到达
                    timer = 0;
                    currentPos++;
                    myText.text = words[strindex].Substring(0, currentPos);//刷新文本显示内容
    
                    if (currentPos >= words[strindex].Length)
                    {
                        OnFinish();
                    }
                }
    
            }
        }
        /// 结束打字,初始化数据
        void OnFinish()
        {
            isActive = false ;
            timer = 0;
            currentPos = 0;
        }
    

    如果大家看了我前面的 unity实现打字机的博客 https://blog.csdn.net/weixin_44302602/article/details/103912825

    这个会稍微好理解一些 我们可以下载一些音效 效果会更好的

    当然也有更简单的效果

     public Text[] texts;
        public  int index = 0;
    
        private void Update()
        {
            
            for(int i = 0; i < texts.Length; i++)
            {
                texts[i].enabled = false;
            }
            texts[index].enabled = true;
            if (Input.GetMouseButtonDown(0))
            {
                index++;
    
            }
            index %= texts.Length;//这个防止超出数组的界限
        }
    

    这个是需要在unity中赋值的 而且要创建好几个不同的text来切换(不会有打字机的效果)

    如果你也是unity爱好者 欢迎关注我 我会持续更新我的学习博客

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

    千次阅读 2017-09-08 15:41:45
    游戏中会出现大量的弹出对话框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技术之对话框制作

    千次阅读 2015-01-26 23:12:54
    制作完成的对话框。 新建一个可拖拉的Sprite(Drag Object)-->新建一个可把窗口拖拉大小的Sprite(Drag Resize Script)-->新建一个纸质的Sprite做背景(Anchors:设置为自身) 新建一个...
    新建一个Sprite-->添加Box Collider-->Scroll Bar Script-->设置属性UPScroll Bar(Direction:TopToBottom  把Sprite拖拉到Background里面  Size:0.1)

    新建一个子Sprite-->把子Sprite拖拉到Foreground里面-->把它的高度和宽度设置的和父Sprite一样

    下边是介绍输入文本

    新建一个Label-->添加Box Collider--添加Text List-->添加脚本

    private UITextList testList;
    int i=0;
    void Start () {
    testList = this.GetComponent<UITextList> ();
    }
    void Update () {
    if (Input.GetMouseButtonDown (0)) {
    i++;
    testList.Add ("qishituan.org"+i);
    }
    }

    新建一个ScrollBar-->把子Sprite的Anchors属性里面的Left、Right、Top、Bottom 都设置为自身

    设置Label的属性UIText List(把Label拖拉到Text Label里面,把ScrollBar拖拉到Scroll Bar里面

    然后是聊天窗口的制作
     
    制作完成的对话框。


    新建一个可拖拉的Sprite(Drag Object)-->新建一个可把窗口拖拉大小的Sprite(Drag Resize Script)-->新建一个纸质的Sprite做背景(Anchors:设置为自身)

    新建一个ScrollBar,让两个Sprite一样大小父Sprite设置

    新添加一个TextList

    新添加一个TextField(Anchors:Top设为Bottom,其它都是自身

    把脚本拖拉到TextFiled上面把TextFiled拖拉到属性On Submit里面的Notify上面,并选择相应的Method把聊天的Label拖拉到属性Chart里面的Text List上面

    public UIInput input;
    public UITextList textList;
    public void OnChartSubmit(){
    string value = input.value;
    textList.Add (value);
    input.value = "";
    }

    更多精彩关注:http://www.gopedu.com/

    展开全文
  • Unity自适应Text对话框

    千次阅读 2019-07-16 13:56:56
    制作一个对话框,让框能随着文本的长度和高度变化。 模式一 一个随文本的实时输入而自动适应的对话框。 1.效果: 2.层级与组件: frame就是个Image对话框图,锚点和Text一样,使用ContentSizeFitter组件使...

    制作一个对话框,让框能随着文本的长度和高度变化。

    模式一

    一个随文本的实时输入而自动适应的对话框。

    1.效果:

    2.层级与组件:

    frame就是个Image对话框图,锚点和Text一样,使用ContentSizeFitter组件使Text适应文字,当小于单行的最大长度时使用HorizontalFit,当大于单行最大长度则使用VerticalFit,然后在代码中让框的大小随Text的大小变化。

    3.代码:

    /// <summary>
        /// 对话框
        /// </summary>
        [HideInInspector]
        public Image boxFrame;
        /// <summary>
        /// 输入文本
        /// </summary>
        [HideInInspector]
        public Text messageText;
        private ContentSizeFitter sizeFitter;
        /// <summary>
        /// 框最小长度
        /// </summary>
        public int minFrameWidth = 100;
        /// <summary>
        /// 框最大长度
        /// </summary>
        public int maxFrameWidth = 1200;
        /// <summary>
        /// 框与文本的高度差
        /// </summary>
        private float offsetDistance;
    	// Use this for initialization
    	void Start () {
            boxFrame = transform.Find("frame").GetComponent<Image>();     
            messageText = GetComponentInChildren<Text>();
            sizeFitter = messageText.transform.GetComponent<ContentSizeFitter>();
            offsetDistance = boxFrame.rectTransform.sizeDelta.y - messageText.rectTransform.sizeDelta.y;
        }
    	
    	void Update () {
            AdjustDialogBoxSize();
        }
    
        private void AdjustDialogBoxSize()
        {
            //大于行的最大长度则换行
            if(boxFrame.rectTransform.sizeDelta.x > maxFrameWidth)
            {
                if(sizeFitter.horizontalFit == ContentSizeFitter.FitMode.PreferredSize)
                {
                    sizeFitter.horizontalFit = ContentSizeFitter.FitMode.Unconstrained;
                    sizeFitter.verticalFit = ContentSizeFitter.FitMode.PreferredSize;
                }
            }
            else
            {
                if (sizeFitter.horizontalFit == ContentSizeFitter.FitMode.Unconstrained)
                {
                    sizeFitter.horizontalFit = ContentSizeFitter.FitMode.PreferredSize;
                    sizeFitter.verticalFit = ContentSizeFitter.FitMode.Unconstrained;
                }
            }
            boxFrame.rectTransform.sizeDelta = new Vector2(minFrameWidth + messageText.rectTransform.sizeDelta.x, messageText.rectTransform.sizeDelta.y + offsetDistance);
        }

     

    模式二

    传入一段文字到对话框,然后根据文本一次性适配。

    1.效果:

    2.层级与组件

     

    在frame的狂下有两个Text,一个做行的长度适配,一个做行数的高度适配,当长度小于行最大长度时,把VecticalText的Color设为透明隐藏,当大于行最大长度则换行,把Horizontal的字体颜色设置为透明隐藏。

    3.代码:

        /// <summary>
        /// 对话框
        /// </summary>
        [HideInInspector]
        public Image boxFrame;
    
        public Text horizontalText;
        public Text verticalText;
    
        private ContentSizeFitter sizeFitter;
        /// <summary>
        /// 框最小长度
        /// </summary>
        public int minFrameWidth = 100;
        /// <summary>
        /// 框最大长度
        /// </summary>
        public int maxFrameWidth = 1200;
    
        public Color textColor = new Color(1, 1, 1, 1);
        public Color hideColor = new Color(1, 1, 1, 0);
        /// <summary>
        /// 框与文本的高度差
        /// </summary>
        private float offsetDistance;
    
    	// Use this for initialization
    	void Start () {
            boxFrame = transform.Find("frame").GetComponent<Image>();     
            offsetDistance = boxFrame.rectTransform.sizeDelta.y - horizontalText.rectTransform.sizeDelta.y;
    
            verticalText.color = hideColor;
            horizontalText.color = textColor;
            StartCoroutine(AdjustSize());
        }
    
        private void AdjustDialogBoxSize()
        {
            //换行
            if(verticalText.rectTransform.sizeDelta.y > 85)
            {
                verticalText.color = textColor;
                horizontalText.color = hideColor;
                boxFrame.rectTransform.sizeDelta = new Vector2(minFrameWidth + verticalText.rectTransform.sizeDelta.x, verticalText.rectTransform.sizeDelta.y + offsetDistance);
            }
            else
            {
                boxFrame.rectTransform.sizeDelta = new Vector2(minFrameWidth + horizontalText.rectTransform.sizeDelta.x, horizontalText.rectTransform.sizeDelta.y + offsetDistance);
            }
        }
    
        /// <summary>
        /// 传入文本
        /// </summary>
        /// <param name="input"></param>
        public void SendText(InputField input)
        {
            verticalText.text = horizontalText.text = input.text;
            StartCoroutine(AdjustSize());
        }
    
        IEnumerator AdjustSize()
        {
            yield return new WaitForEndOfFrame();
            AdjustDialogBoxSize();
        }

     

    展开全文
  • Unity实现RPG角色对话框

    千次阅读 2017-10-16 19:08:25
    因为打算制作一款RPG类的游戏demo,
  • unity之简单的对话框

    千次阅读 2015-01-09 22:15:33
     在今天的空余时间,我还抽空看了一下对话框制作,在一个游戏中,NPC是不可缺少的,在接任务,买装备的时候和NPC对话就必不可少了,下面让我们来制作对话框。  我们要实现的功能是,当鼠标点在NPC身上的时候,...
  • Unity3D中制作一个GUI对话框界面

    千次阅读 2014-03-13 16:28:26
    //对话框的面积大小 var windowOpen:boolean = true;//标识对话框是否显示 var styleB:GUIStyle;//确定按钮的样式 var style:GUIStyle;//对话框窗口的样式 var styleLab1:GUIStyle;//说话对象文字的样式 ...
  • Unity初学者课堂—助手游戏局部功能开发讲解之ToggleGroup制作Tab对话框学习闲言ToggleGroup制作Tab对话框 学习闲言 使用学习软件的同时顺便也学一下入门开发知识吧,闲着也是闲着。(前提是你必须先初步认识了...
  • Unity_Live2d 在脚本中操作UI_text 最首先的就是调用命名空间:UnityEngine.UI; 然后使用其中的Text类,去获取游戏中的UI_text文本对象,例如下面代码: public Text score //score是自拟命名 在改变text文本内容...
  • 用fungus插件开发对话框特别特别的方便 而且是不需要任何代码的 所以新手朋友朋友们可以尝试一下 然后我先给出我的demo 因为csdn上边的图片不能超过5m 所以我的demo录的比较快 大家想要看效果的话可以自己动手实现...
  • 最近参与到unity小游戏制作中,我需要实现对话框的点击消失,再点击出现的效果。   转载于:https://www.cnblogs.com/ncgds/p/8586360.html
  • Unity3d 制作聊天框

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

    千次阅读 2017-10-16 14:35:35
    在这两部分教程中,用unity制作一个塔防游戏! 将会学习怎样...... 创建一波敌人 让它们跟随线路点 创建并升级塔,让它们把敌人击碎,最后,将得到一个可以自己扩展的此类型游戏的框架! 注:这个需要unity...
  • Unity3d 制作彩色字

    2015-01-27 20:18:27
    在Project Panel里找到刚才拽进去的字体,比如Arial,找到里面的font Texture,选中,然后在菜单里点“Save Font Texture”,会打开一个保存对话框,把这个图保存到你的项目的Assests目录里的随便哪个地方。...
  • Unity编辑器---创建对话框

    千次阅读 2017-11-10 19:46:51
    Unity编辑器(三)—ScriptableWizard这一篇主要讲创建对话框和保存记录操作并撤销更改和提示信息 1、创建对话框 首先新建一个脚本代码如下 using UnityEngine; using UnityEditor;public class MyWizard : ...
  • Unity中调用文件选择对话框

    千次阅读 2017-01-18 15:36:14
    using System; using System.Runtime.InteropServices; [ StructLayout( LayoutKind.Sequential, CharSet=CharSet.Auto )] public class OpenFileDlg { public int structSize = 0;... public IntPtr
  • 本篇专家指南将介绍在Unity制作高质量光照效果的多种高级方法,其中使用了2D和立方体贴图的光线遮罩,并且利用了Unity高清渲染管线HDRP中的高级着色器。 我们可以在游戏、建筑可视化、电影和模拟项目中使用本指南...
  • unity制作聊天室界面

    万次阅读 多人点赞 2017-10-22 20:25:52
    unity UGUI制作仿LOL客户端聊天室界面,实现按回车发送消息,带滚轮,可以查看之前的消息,发送消息后会跳到最下面。
  • 使用Unity3D制作真实地形的两种方法: 1、在SceneView中使用heighttools直接绘制; 2、使用外部工具制作的heightmaps; 具体操作如下: 1、准备一块DEM数据,格式为img或tiff,并准备好GlobalMapper和Photo...
  • 对话框插件

    2018-03-05 16:24:33
    Fungus_v2.2.2Unity对话框插件,简单制作对话框逻辑。仅用于学习,请勿用于商业项目
  • 本文翻译官方文档关于插件制作的相关注意事项。
  • unity制作的非常简单的自定义消息框Demo,适合新手学习

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,257
精华内容 502
关键字:

unity对话框制作