- 博客(45)
- 资源 (1)
- 问答 (1)
- 收藏
- 关注
原创 Unity摇杆+键鼠控制位移、旋转
这时候运行场景会发现摇杆没用,其实这不是摇杆没用,只是我们脚本写了限制条件,只有手指才能触发摇杆,如果有不需要这个判定的可以删除。运行场景,我们的摇杆也有用了,这两者的共存本文暂时不写,因为涉及UI交互的判定,需要根据实际情况去修改。设置完后我们运行场景,会发现摇杆已经做好了,同时,我们开始编写位移等脚本,位移脚本也很简单,只需要把。然后,新建一个场景,用胶囊去做玩家,摄像机在胶囊下,并且在场景中放两个cube作为参照物。脚本吗,里面我们写了两个交互,一个是摇杆,一个是键盘控制,当我们的视图选择了。
2024-01-13 14:25:34
1453
原创 Unity对接后台和加载图片
在unity中与后台对接,用await在web端暂时还不支持,所以,协程成为比较好的通用方式,以下适用除post访问外的所有对接在面对如下简单的json时,我们用JObject去拿数据在面对如下稍微复杂的json时,我们用JArray取数据"data": ["id": 1,"password": "爱上放大"},"id": 2,"password": "各色地方"},"id": 3,"password": "奥尔格和"
2023-12-02 18:06:05
1809
2
原创 unity动画融合
在大型复杂的场景中,一定遇到过手在鼓掌,头在摇头,腿又是其他动作的要求,但是这些东西又不能做一起,因为有时候要把某个动画单独使用,这时候就用到了动画融合,利用动画状态机分层机制,可以自己在分层的基础上再建动画树,进行更加复杂的操作,下面开始流程。还有就是要注意,有的可能会说要选Additive,但是我用的时候发现敬礼动画手指会变麻花,我在头的动画遮罩中除了头,其他的都禁用了,手的也只开放了手的遮罩。因为我这个动画是敬礼动画,所以我起名字叫敬礼,完成上述参数勾选后,拉到最底下,点击”
2023-08-24 14:02:28
1809
原创 untiy代码打压缩包,可设置密码
用的是一个插件SharpZipLib,在vs的Nuget下载,也可以去github下载用这个最主要的是因为,这个不用请求windows的文件读写权限,关于这个权限我搞了好久,到最后还不如这个好用。
2023-08-01 15:37:56
885
原创 C#栈、List结构的简单搭建
list比栈多了个public T this[int item],所以list可以通过下标访问元素,如果你想用下标访问栈的话,我不是很建议这样操作,因为栈用下标访问元素,那跟list没区别,为什么不直接用list,对吧。栈的实现并不难,调用push,就把数组往后加一位或者*4位,把数组扩展,然后再拷贝临时的数组,这个就是栈的工作原理。list和栈基本类似,这里只写Add和Remove,其他的也都简单。说明我们代码没问题,继续写弹出栈顶的操作。压出栈顶元素的操作,我们也完成了。我们先实现压入栈顶的操作。
2023-07-20 12:35:05
281
原创 C#的ref和out使用
2、out关键字:使用out关键字声明的参数,在方法内部不需要被初始化,可视为未赋初始值。与ref关键字不同,out参数可以在方法内部确定其值,也就是说方法内部必须对局部变量赋值。1、ref关键字:使用ref关键字声明的参数,在方法调用前必须被初始化,并且可以被视为已经赋予了一个初始值。在方法内部对ref参数的修改会影响到方法外部传入的实参,也就是说,我在方法内部修改了局部的值,那么全员变量的值也会被修改。3、总结:ref传的值在方法内部可以不修改其值,out则必须修改。
2023-07-19 09:11:38
424
1
原创 Unity的小工具
2、这个脚本会忽略已经转换过Sprite的图片。不过要注意:1、这个脚本只转换.png或者.jpg格式的图片(当然,你可以自己改)
2023-06-27 17:16:47
578
原创 unity中ScriptableObject的保存技巧
so(ScriptableObject 这里是简称,后面都用so代替ScriptableObject)在处理大量数据,属实不怎么样,本人深有体会,在项目中一开始定的是用so存储数据,到后期数据量变大了,so的维护就变的特别麻烦,因为so用代码赋值后会暂时保存,在unity的属性面板上可以看到我们修改后的内容,但是当我们重启unity后会发现so中的数据又恢复到原来的数据了,也就是说没有保存在本地,面对这种办法,我们可以用json读取后存到so中,话不多说,开始贴代码。
2023-04-18 11:36:43
1981
1
原创 用unity写一个2D类的拼图游戏
因为是webGL的项目,面对的bug解决方案也不同,代码可能有点乱,大家将就看看,webGL不支持禁用多点触控,所以在这里用了比较复杂的判定,不然直接一句话的事,而且策划说在松手状态下,拼图块要回到原位,并且要旋转到原来的位置,我当时听到这个真是mmp了(小声bb一句,狗策划)前几天接了一个拼图项目刚好现在写完了,拿出来分享,拼图不难,我也是看了一个官方案例写的,因为当我们写图片跟随鼠标的时候,鼠标已经有一个图片了,这个图片会遮挡射线,然后就无法判断当前拼图块在哪里,话不多说,上菜。()是停止拖拽的方法。
2023-03-31 17:38:45
4241
原创 Unity中ScriptableObject的应用
ScriptableObject是官方的数据容器,可存各种类型(图片、音频、文字等)的数据,且整个ScriptableObject可以被打成AB包,更加方便管理,也不用担心内存问题ScriptableObject无需解析、使用方便、数据相对安全,是除数据库之外替代JSON、XML的不二选择 像这样,unity自带的类型都可以直接创建,还有第二种形式: 自定义类在使用时必须要加上[Serializable]序列化,才可以在属性面板可视化 fileName是创建后默认的名字,menuName是在菜单
2022-12-08 11:37:38
499
原创 UnityWebGL发布包问题及IIS配置
将平台切换到WebGL,打开Player Settings-Publishing Settings-Compression Format将压缩禁用,这样打包出来的文件数据后缀为.data。然后点击发布。
2022-10-14 15:06:45
4091
原创 Unity协程
1、协程只能在MonoBehaviour或其子类使用2、协程类似于红绿灯,在碰到等待指令时停下,等待指令结束时继续运行3、yield return new WaitForSecond(n)受Time.timeScale影响,当Time.timeScale为0时,yield return new WaitForSecond(n)将失效 在Unity中,可以用StopCoroutine来终止一个协程也可以用StopAllCoroutines();终止MonoBehaviour类中所有能
2022-06-16 10:20:04
1141
原创 UnityPICO转HTC的操作
1、点击Edit - Project Setting - Player里的XR Setting不能有冲突,像下面这样是不行的我们打开Window - Package Manager把里面的XR的三个插件删掉(P口的也要删!!!)然后我们重启客户端,在Edit - Project Setting - Player里没有冲突了再接下面的操作在Window - Package Manager里面把XR的三个插件重新引用然后切换PC端打包,P口转HTC(PC端)就完成了HTC转P..
2022-05-26 17:18:51
584
原创 UnityXR相关应用(1)
首先我们要去购买一个专业的VR设备,然后我们去steam下载steam VR,再打开Unity进行编程开始之前,我们需要添加一些插件Window-Package Manager加入三个插件这个模式选择Unity Registry,然后搜索这三个插件进行添加也别忘了加这个我们在Hierarchy中右击下拉菜单中选择XR-Device-based-XR Origin,然后会创建两个东西XR Interaction Manager这个不用动,点击XR Origin把Trac..
2022-05-17 15:35:38
638
原创 Unity联网插件(PUN)
PUN简单介绍:Photon引擎属于Exit Games公司,是世界排名第一的独立网络引擎和多人通信平台,适用于独立开发者和专业工作室Photon引擎具有通信快速、高可靠性、使用方便、容易扩展等优点针对Unity网络游戏开发,Photon引擎是首选服务器引擎PUN网络连接状态:PUN具体操作:在官网中下载PUN2,导入Unity(Unity版本必须在2018以上)Multiplayer Game Development Made Easy | Photon Engine
2022-05-06 21:52:40
3029
原创 Unity安卓端横屏设置
Screen.orientation = ScreenOrientation.AutoRotation;//设置方向为自动(根据需要自动旋转屏幕朝向任何启用的方向。) Screen.autorotateToLandscapeRight = true; //允许自动旋转到右横屏 Screen.autorotateToLandscapeLeft = true; //允许自动旋转到左横屏 Screen.au...
2022-05-06 14:08:31
5543
原创 Shader(1)
Shader(着色器)是一种专门用来渲染3D图形的一种技术,可以使画面变得更逼真更漂亮Shader有三种基本类型:1、固定功能着色器(Fixed Function Shader)2、表面着色器(Surface Shader)3、顶点着色器&片段着色器(Vertex Shader & Fragment Shader)下面我们用第二种表面着色器,来示范。新建一个Shader修改名字为testSurfaceShader然后在另一个文件夹新建一个材质球随...
2022-04-26 09:23:48
202
原创 序列化与反序列化
1、定义序列化是将一个对象转换成字节流以达到将其长期保存在内存、数据库或文件中的处理过程。它的主要目的是保存对象的状态以便以后需要的时候使用。与其相反的过程叫做反序列化。2、序列化一个对象为了序列化一个对象,我们需要一个被序列化的对象,一个容纳被序列化了的对象的(字节)流和一个格式化器。ISerializable接口允许我们使任何类成为可序列化的类。如果我们给自己写的类标识[Serializable]特性,我们就能将这些类序列化。除非类的成员标记了[NonSerializable],序列化会
2022-04-25 21:26:23
271
原创 浅谈补间动画Unity补间动画(DOTween)
用之前需要引用命名空间using DG.Tweening;//位移 transform.DOMoveX(5, 2); transform.DOMove(new Vector3(5, 0, 0), 2); transform.DOMove(new Vector3(-5, 0, 0), 4); //旋转 transform.DORotate(new Vector3(0, 90, 0), 5); //缩放.
2022-04-21 20:05:02
2708
原创 unity替换鼠标图标
第一步,将要替换的图标转换格式然后打开脚本创建因为我用的是Resources加载,所以要在Start获取忽略名字,名字起的很随意!!!然后在下面写两个有参方法,(有参方法的目的是反复使用)要用的时候直接调方法传入对象就行Texture2D Hand, Arros,cc;Hand = Resources.Load<Texture2D>("MountCursor");Arros = Resources.Load<Texture2D>("...
2022-04-20 20:26:46
3348
原创 unity禁用物体上的脚本或者组件
继承了MonoBehaviour类transform.GetComponent<Button>().enabled = false;这样可以禁用物体上的Button组件,想禁用别的组件也是一样的写法
2022-04-20 18:56:49
4066
原创 MVC框架与PlayerPrefs(本地存储)
概念MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写是一种软件设计规范,用一种业务逻辑、数据、界面显示分离的方法组织代码好处:降低耦合,方便修改,逻辑更清晰缺点:脚本变多,体量变大,流程变复杂开始前需要创建两个panel,并做成预设,放在Resources下的UI文件夹中,方便克隆先创建三个文件夹,分类管理创建PlayerModel脚本 public string Play.
2022-04-16 16:59:10
298
原创 lua基础2
--nil不能放最后a={1,2,3,"hello",2,4,true,5,4}print(#a)print(a[1])for i=1,#a doprint(a[i])end--a={{1,2,3},{4,5,6}}--print(a[1][1])--print(a[2][2])--for i=1,#a do b=a[i] for j=1,#b do print(b[j]) endend--键和值a={1,2,3,7,5}for k,v in.
2022-04-16 16:32:50
186
原创 lua的基础
a={8,3,4}--表table.sort(a)--函数排序~=--这个是不等于and--与or--或no--非for i=1,5 do--for循环a=i*2endif(year%4==0 and year%100~=0 or year%400==0) then--if语句 print(year.."是闰年")endif (a>0 and a<=6) then--if多分支 print("儿童")elseif (a>6 and a<=13) .
2022-04-14 19:19:05
63
原创 fungus插件任务
一个任务的fungus声明fungus 设置一个开关,当触发碰撞器时,将开关打开,当在持续碰撞时如是碰到的是人物,并且按下空格且开关为开,就执行对话重载名字并且关闭开关//多个任务的时候就是加个else 其他都一样 using System;using System.Collections;using System.Collections.Generic;using Fungus;using UnityEngine; public class FungunNpcGrandFather .
2022-04-12 13:44:46
393
原创 AssetBundle的概念和使用
AssetBundle简称AB包,特定平台的资产压缩包(包括模型、贴图、预设体、音效、材质球等资产)作用:Resources下的资源只读且打包后不可修改,而AB包存储位置自定,后期可以动态更新;AB包压缩后节省空间;可以进行资源热更新和脚本热更新首先创建一个Editor文件夹(会创建Tools的一个菜单项)里面建一个test.cs测试文件(用ab包必须将脚本建在Editor下)using System.Collections;using System.Collect...
2022-04-11 20:36:05
320
原创 Unity创建字体库给TextMeshPro
先打开window-TextMeshPro-Font Asset Creator把准备好的字体文件.ttf拖入Source Font File然后去准备常用三千字,存入.txt将准备好的.txt拖入Character File中,点击Generate Font Atlas生成(注意!存放.txt和.ttf的文件夹不能有中文!!!)生成了.asset文件后,可以将它拖入使用了具体来说,并没有什么难度,只是记一下操作,字体库我会在后续附加,字体库中可能不是那么全,大...
2022-03-30 00:12:15
3532
原创 Unity用射线给玩家做一个点哪到哪的功能
写代码之前,要先将地面设置静态,然后添加Navigation,进行烘焙场景,然后在玩家身上挂上NavMeshAgent,就可以用代码控制玩家了Animator an; NavMeshAgent age; public Transform cube; // Start is called before the first frame update void Start() { an = GetComponent<Anim...
2022-03-24 21:16:09
1185
原创 Unity中简单完成血条跟随,飘血效果等
代码如下: float speed = 3f; public Text texts; public Transform qiu; public Transform Xue; NavMeshAgent age; Animator an; public GameObject enamy; public static bool a2=false; public Image aaa; void Start() {
2022-03-24 21:11:41
2993
原创 C#用代码简单完成敌方巡逻
public Transform[] luj;//这里拖巡逻的点位 float timer = 0; float ttt = 3f; int index = 0; NavMeshAgent nav; Animator an; void Start() { nav = GetComponent<NavMeshAgent>(); nav.destination = luj[index].position; .
2022-03-24 21:06:36
244
原创 Unity摄像机跟随
private Transform player; public float speed = 2; public float up = 3.04f, away = 4.55f; void Start() { player = GameObject.FindWithTag("Player").transform; } // Update is called once per frame void Update() { .
2022-03-24 21:02:24
1637
原创 用JSON存储账号密码
新建一个脚本Sava,和一个denglu脚本public class denglu : MonoBehaviour{ public InputField nametxt, passwordtxt; public Button btn; List<Sava> list = new List<Sava>(); void Start() { btn.onClick.AddListener(Onlick);
2022-03-24 20:59:34
2692
原创 C#集合的简单概括
1、概念集合(Collection)类是专门用于数据存储和检索的类。这些类提供了对栈(stack)、队列(queue)、列表(list)和哈希表(hash table)的支持。大多数集合类实现了相同的接口2、ArrayList集合list.Insert();//插入数据list.Remove();//删除数据list.RemoveAt();//删除数据list.Clear();//清理所有数据list.Sort();//正序排序list.Reverse();//逆序ArrayList li
2022-03-10 19:18:07
149
原创 Unity射线和游戏暂停切换场景的方法
前几天从知乎上看到了,从屏幕中心发射射线,然后记下Ray ray = Camera.main.ScreenPointToRay(new Vector3(Screen.width / 2, Screen.height / 2, 0));//屏幕中心位置发射射线 RaycastHit hit; if (Physics.Raycast(ray, out hit, 100)) {}这个是从预制体位置发射射线
2022-02-27 21:27:09
2043
原创 Unity判断敌方的方位
用点乘和叉乘再加if嵌套即可完成Vector3 a = Vector3.Cross(transform.forward, dog.transform.position - transform.position); float pos = Vector3.Dot(transform.forward, dog.transform.position - transform.position); if (a.y > 0) { i.
2022-02-27 21:22:22
2453
原创 Unity四元数及其他数
print(Mathf.Abs(-1));//绝对值print(Mathf.Ceil(3.5f));//取最接近上限的整数print(Mathf.Floor(3.5f));//取最接近下限的整数print(Mathf.Clamp(2,1,10));//范围限制是1-10 默认 2print(Mathf.Max(1,2,3,1,4,5,6,8));//最大值8print(Mathf.Min(1,2,3,1,4,5,6,8));//最小值1print(Mathf.PI);print(Mathf..
2022-02-27 21:20:24
1389
vs2022编译出问题
2022-03-01
TA创建的收藏夹 TA关注的收藏夹
TA关注的人