![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Unity
文章平均质量分 60
JK Chen
ACM退役选手,战绩4金6银
展开
-
Unity2D:2D射线与Rigidbody2D产生的Bug
父亲加上Rigidbody2D,儿子加上Collider2D后,射线的hit变为父亲 /// <summary> /// 获取鼠标下的2D游戏对象 /// </summary> /// <returns></returns> public static GameObject MouseGameObject2D(int layer = ~0) { float len = 0.001f;原创 2020-12-08 17:07:13 · 719 阅读 · 0 评论 -
Unity通用帮助类(干货大集合)
/* * Author : Jk_Chen */using System;using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.SceneManagement;public class Helper{ private Helper() { } public static readonly Helper instance = new H原创 2020-09-20 21:33:38 · 1510 阅读 · 1 评论 -
Unity:3D物体添加点击事件
为物体挂载C#脚本,将需要触发的方法写进脚本。例如: public void OnClick() { DbConsole.CreateTable_Card(); }为物体添加组件:Event Trigger,function选择脚本内的方法,Object选择物体。原创 2020-08-16 12:48:07 · 4150 阅读 · 0 评论 -
unity2019 build gradle failed解决办法
可能原因1默认gradle从谷歌下载,要梯子才行。找到这个文件夹Unity\2019.4.1f1\Editor\Data\PlaybackEngines\AndroidPlayer\Tools\GradleTemplates把baseProjectTemplate.gradle里面的repositories {**ARTIFACTORYREPOSITORY** google() jcenter() }改为repositories原创 2020-07-07 15:37:42 · 11188 阅读 · 4 评论 -
Unity2D教程:单例模式、SceneManager.LoadSceneAsync场景切换、Loading界面进度条
关注专栏,持续更新哦教程总目录单例模式一种和static方法较为类似的东西。下面两种写法的作用类似:public class Config{ public static int a; public static void F(){};}// 调用Config.a;Config.F();public class Config{ private Config() { } public static readonly Config instance =原创 2020-07-05 10:32:15 · 3467 阅读 · 2 评论 -
Unity2D教程:安卓真机调试
手机进入开发者模式,打开USE调试,并连接上USE(需要运行通过USE安装应用)。打开Unity后,Refresh后可以看到你的手机了(手机端可以需要同意某个请求,会弹出来的)勾选这三项然后Build And Run,会生成apk并自动安装到安卓手机。在控制台中,可以看到Debug.Log()的输出,分析器里面也有内容。如果不行的小伙伴可以试试看cmd下敲入:adb forward tcp:34999 localabstract:Unity-项目名称去掉空格...原创 2020-07-04 20:00:32 · 803 阅读 · 0 评论 -
Unity 不规则UI Image穿透透明区域
例如一个三角形精灵,实际的射线遮挡区域是包围这个三角形的矩形。我们想让点击事件穿透透明区域,步骤很简单。在精灵的检测器内,高级选项的读写开起来:然后在代码中把alphaHitTestMinimumThreshold设为0.5ameObject.GetComponent<Image>().alphaHitTestMinimumThreshold = 0.5f;...原创 2020-07-03 20:29:29 · 2881 阅读 · 5 评论 -
Unity2D教程:当Time.timeScale=0时完成计时器
一个很神奇的功能:暂停游戏,且1秒后自动继续游戏。用Time.timeScale=0来暂停游戏后,不管是用Timer-=Time.deltaTime还是用协程StartCoroutine来完成计时器都不行。因为上面两个方法都需要Time.timeScale。现在来用不基于Time.timeScale的方法完成计时器。Time.realtimeSinceStartup会返回从游戏开始后到现在的时间,想到了这个,我们的计时器就出来了。先设置时间点为当前时间加上暂停的间隔时间:needToUnPaus原创 2020-07-03 20:24:05 · 1859 阅读 · 0 评论 -
Unity2D教程:事件顺序、音乐播放、载入资源、游戏暂停
全是自己总结的干货事件顺序当一个GameObject首次Active=true后,会先触发Awake函数,再触发Start函数,之后每帧触发Update函数。不管是在游戏内通过SetActive(true)来激活,还是本身已经激活,触发的顺序都为:Awake,OnEnable,Start。之后每次SetActive(false)触发OnDisable,每次SetActive(true)触发OnEnable。音乐播放游戏内部音乐从时间长度分为两种:短音乐和长音乐。短音乐通过获取AudioSo.原创 2020-07-03 19:00:46 · 1138 阅读 · 1 评论 -
Unity2D教程:UI随屏幕缩放相关问题
设置canvas随屏幕大小缩放,匹配模式选择Expand背景图片在锚点下按住Alt选择右下角那个。效果:原创 2020-07-03 10:08:39 · 3544 阅读 · 0 评论 -
Unity2D教程:配置SQLite,并在安卓运行(附带SQLite常用操作)
导入dll文件,Mono.Data.Sqlite.dll以及SQLite3.dll,放到Asset/Plugins下面。Mono.Data.Sqlite.dll在Unity安装目录下面找一个SQLite3.dll网上下一个我有.Net 2.0版本的你们可以试试https://pan.baidu.com/s/10zfaiH_kY0NP5ub_WfH_fQ,提取码9ls3代码内using一下using Mono.Data.Sqlite;基本操作/* * Author : Jk..原创 2020-07-02 16:29:18 · 905 阅读 · 0 评论 -
Unity2D教程:菜单界面、文字设置、常用界面功能
菜单界面创建一个UI-Image,会自动生成Canvas。设置Canvas的设置模式为随屏幕改变设置Image的伸展模式,在这个界面按下Alt键会变成这样,选择右下角那个就是填充整个Canvas了在当前Image下创建Button,将Button下面的Text和Button自身都弄成预置物Text可以加一个Outline组件更加美观,并且设置为居中效果常用按钮事件绑定按钮事件,把下面的脚本挂到Image下,通过public获取按钮对象。/* * Author :原创 2020-06-30 19:14:28 · 4681 阅读 · 0 评论 -
修改Unity Asset Story的默认下载路径
本机的默认下载路径在C:\Users\Thinkpad\AppData\Roaming\Unity\Asset Store-5.x其中AppData是隐藏文件夹,需要右键快速访问后点击选项,里面修改找到Asset文件夹后,将整个剪贴到你想要放的目录, 我放在D:\Files and documents\Asset Store-5.x然后进cmd,输入命令mklink /j "C:\Users\Thinkpad\AppData\Roaming\Unity\Asset Store-5.x" "..原创 2020-06-30 17:47:22 · 2589 阅读 · 3 评论 -
Unity2D教程:生成apk文件
下载JDKhttp://www.Oracle.com/technetwork/Java/javase/downloads/index.html安装到自己选择的目录(路径最好没有中文)添加一个叫JAVA_HOME的系统变量,值为安装路径系统变量里面的Path内新建项:%JAVA_HOME%\bin此时可以在cmd下通过javac -version查看JDK版本下载Android SDKhttps://www.androiddevtools.cn/Android SDK工具 - SDK原创 2020-06-30 17:02:25 · 1113 阅读 · 0 评论 -
Unity2D教程:通过摇杆控制人物移动
创建摇杆还是要提醒一下Canvas设置size随屏幕大小变化而变化。创建UI内的Image,设置为摇杆背景。需要设置锚点为左下角。在Rocker下再创一个Image,RockerCenter。锚点要在正中间。创建脚本ScrollCircle,并给Rocker。using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.EventSystems;using原创 2020-06-26 11:11:04 · 3512 阅读 · 2 评论 -
Unity2D教程:人物状态条(头像、生命值、魔力值)
UI里面创建4个Image,代表背景框、血条、蓝条、头像。改变source image,并按下set native size恢复到原始大小由于固定于左上角,所以设置锚点为左上角人物状态栏最好设置大小随屏幕大小而改变设置血条蓝条变动,这样设置后fill amount减少后会从右边开始减少,并且左边的部分不会变动。Player下面通过脚本修改amount为health/maxHealth,蓝条同理(通过tag来找到血条)GameObject healthBar..原创 2020-06-25 18:57:53 · 2756 阅读 · 1 评论 -
Unity2D教程:人物移动动画,动画状态机之间的转化,BlendTree,动画卡顿问题
2D像素人物可以通过抬左脚和抬右脚以及原画三种照片完成动画效果把这三种图片水平翻转后,你就得到了所有需要的素材最简单的正常动画逻辑需要4个动画,左idle,右idle,左walk和右walk。idle直接让4张相同的原画就行walk则是左脚右脚左脚右脚左脚右脚,重复是为了看起来流畅点(1秒6个关键帧)状态机的转换需要想一下我们设置了2个参数,speed和lookLeft,表示速度和朝向。idle到walk:检测到speed>0.5触发,根据朝向判断哪个..原创 2020-06-25 18:45:23 · 4698 阅读 · 0 评论 -
Unity2D教程:添加敌人、简单动画、动画结束后销毁对象
添加敌人添加一个敌人加上Collider 2D用OnCollisionEnter2D来给予伤害,这些都比较简单不仔细说了。private void OnCollisionEnter2D(Collision2D collision) { Player p = Helper.GetPlayerByCollision2D(collision); if (p == null) return; p.HealthChange(-damege);原创 2020-06-25 18:20:34 · 3475 阅读 · 0 评论 -
Unity2D教程:物品拾取、Trigger、计时器
物品若无法拾取也不会阻碍人物行动,所以设置为Is Trigger。上代码Helper.csusing System.Collections;using System.Collections.Generic;using UnityEngine;/// <summary>/// 帮助类/// </summary>public class Helper : MonoBehaviour{ // 获取Collider2D collision所对应的PlayerHe原创 2020-06-24 21:22:52 · 2542 阅读 · 1 评论 -
Unity设置默认C#文件的内容
找到Unity\Editor\Data\Resources\ScriptTemplates下的81-C# Script-NewBehaviourScript.cs.txt将内容设置为:/* * Author : YourName */using System.Collections;using System.Collections.Generic;using UnityEngine;public class #SCRIPTNAME# : MonoBehaviour{ v原创 2020-06-24 20:11:04 · 537 阅读 · 0 评论 -
Unity 常用代码
键盘输入:if(Input.GetKey(KeyCode.I/Space/LeftArrow))鼠标输入:Input.GetMouseButtonDown(0)设置速度:this.GetComponent<Rigidbody>().velocity = new Vector3(x,y,z)施加力:this.GetComponent<Rigidbody>().AddForce(Vector3.up * force, ForceMode.Force);时间相关向量原创 2020-06-24 19:35:02 · 5717 阅读 · 0 评论 -
Unity2D教程:相机跟随
导入包:Cinemachine(install并import)原创 2020-06-24 17:06:50 · 2063 阅读 · 0 评论 -
Unity2D教程:碰撞器Collider,抖动问题,人物旋转问题
人不能进到树里面,所以需要相互碰撞来杜绝这个现象给人和树添加Collider 2D,点击Edit Collider修改碰撞器的位置和大小。2D下一般以下半部分作为碰撞区域,比较真实。添加Rigidbody 2D,让你的游戏对象被物理引擎所控制,它能通过受到推力和扭力来实现真实的物理表现效果。所有游戏对象必须包含刚体组件来实现重力、通过脚本施加力、或者与其他对象进行交互。该场景不需要重力,设置Gravity为0。且不希望人物旋转,所以锁定Z轴。此时人和树就会分隔开了,但是碰撞原创 2020-06-24 16:00:02 · 4809 阅读 · 0 评论 -
Unity2D教程:预置物Prefabs
当有很多同一对象(多棵树)时,每棵树除了位置不同,其他都相同。且在之后的设计中,改变了一个就可以同时改变其他的,这便是预置物的好处。在Assets下面创建Prefabs文件夹。将Scene下面的对象拖到该文件夹下面就可以使其变为预置物(变为蓝色)。可以直接从文件夹内将预置物拖出。之后对一个进行修改后(除了位置),可以直接apply修改所有的预置物(文件夹下面的那个也会变)...原创 2020-06-24 15:36:26 · 1168 阅读 · 0 评论 -
Unity2D教程:地图制作Tilemap
Assets下创建一个Tiles文件夹,等会所有的资源都保存在这里创建地图创建地图调色板将图片拖入Images文件夹可以设置将该图片分为几块设置单元格对应的像素,比如图片是200200像素,分成22块,所以单个unit是100画板使用选中一种后使用工具在Tilemap里面画就行了,工具前面两个不清楚,后面依次是画一格,画一个矩形,在Tilemap里面选中,橡皮擦,填充一块区域。...原创 2020-06-24 14:29:15 · 6251 阅读 · 0 评论 -
Unity2D教程:人物移动
按键自带的Input有GetAxisRaw来获取按下按键后所对应的值,Input.GetAxisRaw(“Horizontal”)在按下D或右箭头返回1,A或左箭头返回-1;Input.GetAxisRaw(“Vertical”)同理。Input.GetAxis会根据按下时间返回小数,类似于有了加速度 float moveX = Input.GetAxisRaw("Horizontal"); float moveY = Input.GetAxisRaw("Vertic原创 2020-06-24 14:10:13 · 15053 阅读 · 3 评论 -
Unity textMeshpro 显示中文设置
UI内的text很多时间满足不了需求,3D下的textMeshpro却默认不支持中文。字体配置通过下面这个(.asset文件)完成,默认的那个不支持中文:我们需要自己做一个:下面需要两个文件,msyh通过C:\Windows\Fonts里面复制一个(eg.微软雅黑)到项目目录下生成,一般需要很久时间处理。zh-ch是一个txt文档,一个拥有大部分汉字的文档,完成后按generate后再save一下就生成好了.asset文件。当然你们实在不行的话我有现成的。。链接:https://pan.原创 2020-06-17 19:26:52 · 23225 阅读 · 20 评论 -
Unity相关安装
下载Unity Hub和Unity我是网上找的2019 pro破解版下载vscode,并安装unity包:设置Unity默认ide:(Edit - Preference - Extennal Tools - Extennal Script Editor)原创 2020-06-16 20:28:46 · 190 阅读 · 0 评论