
Unity功能脚本
一杯杰曦卡
生活哪能一马平川,Passion!!!!!!!!!!!
展开
-
Unity实现扇形小地图的区域检测
unity实现扇形内小地图效果原创 2022-11-25 00:02:54 · 1458 阅读 · 0 评论 -
Unity内置后处理Post Processing
Unity中使用PostProcessing后处理效果。原创 2022-10-17 12:08:22 · 3809 阅读 · 0 评论 -
Unity中WEBGL平台下【Unity中调用JS上的方法】【JS调用Unity中的方法】
官方文档:【传送门】WEBGL平台下【调用JS上的方法】最近开发WEBGL平台上的项目,很多时候我们需要在Unity中调用网页端的方法而不是在Unity内部调用,比如场景中点击音效(为了减少打包包体大小采取了在网页上播放音效),点击按钮跳转新的场景等等等等应用场景。 首先创建一个后缀为`.jslib`的文件测试代码如下,放置在Assets文件夹下的Plugins文件夹下。mergeInto(LibraryManager.library, {UnityToJs_Simple: function原创 2022-01-08 12:17:17 · 5378 阅读 · 0 评论 -
Unity Android端对JSON数据的读取和修改
1.路径读取的几种方式这里简单总结一下我们在开发安卓端时,常用的路径读取的几种方式:Resources.Load<T>()Resources文件夹是特殊文件夹,打包出APK或者生成EXE文件后,就不会存在这个外部路径了,它是内部动态加载资源。它是只读的,不能动态的修改。打包使会被压缩加密。Application.streamingAssetsPathStreamingAsset文件夹的内容会原封不动的打入包中,在Android端下是只读的,但是在PC端是可以读写的,必须放在根原创 2021-11-17 00:06:21 · 8131 阅读 · 3 评论 -
Unity封装VideoPlyaer组件包含全屏+静音+进度条+时长显示
说明 最近开发时需要播放视频,回忆以前做过的项目,好多都有在Unity3D中播放视频,每次都是自己重新实现一些功能,类似与进度条拖动,显示时长等等。今天就是将其封装一下,以后再用到直接拿来用。包含的功能:视频进度条,可点击进度条,拖动进度条点击视频实现视频播放与停止全屏显示静音显示视频时长播放界面:脚本挂载:主要脚本:using UnityEngine;using UnityEngine.UI;using UnityEngine.Video;public class原创 2021-09-15 18:24:26 · 3041 阅读 · 6 评论 -
Unity接入罗技G29方向盘,通过SDK获取按键信息
Unity接入罗技G29方向盘,通过SDK获取按键信息说明: 最近需要做一个外设汽车驾驶相关的软件,采用的外设 罗技G29方向盘,项目中遇到的问题这里记录一下。项目准备: 1.下载罗技的SDK 2.下载罗技游戏软件 3.Unity商店中导入Logitech Gaming SDK遇到的问题: 1.Unity商店中导入的SDK运行会报错,将项目准备中步骤一下载的SDK 路径:Lib\x64\LogitechSteeringWheelLib.lib 复制到Logitech SDK文件夹下原创 2021-08-12 11:43:11 · 4846 阅读 · 6 评论 -
Unity异步加载场景,加载到100%后按任意键进入主场景
说明:这里通过 sceneIndex= PlayerPrefs.GetInt("SceneIndex"); 来确定要加载的场景索引。&直接赋值将对应组件拖拽上即可using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.SceneManagement;using UnityEngine.UI;using DG.Tweening;using QFramew原创 2021-08-07 15:25:23 · 768 阅读 · 0 评论 -
Unity实现安卓端手势控制摄像机的旋转和缩放
说明 上一篇记录了PC端鼠标控制摄像机的移动和缩放,这一篇写的是在安卓机上实现手势控制摄像机围绕一个物体进行旋转和缩放,两篇的代码逻辑基本一样只是输入检测有区别,这里我是分开记录,没有整合【Unity实现PC端鼠标控制摄像机的移动和缩放】,使用的方式也很简单,将脚本挂载到主摄像机中。 这里还用到了DoTween的插件和UniRx,需要自己导入一下,如果不想使用插件,可以把以下代码简单修改一下。using UnityEngine;using DG.Tweening;using UnityEngi原创 2021-07-27 16:09:23 · 3030 阅读 · 1 评论 -
Unity实现鼠标控制摄像机围绕中心点的旋转和缩放
说明 实现了一个功能脚本,方便于摄像机围绕一个物体进行旋转和缩放,使用的方式也很简单,将脚本挂载到主摄像机中。 这里还用到了DoTween的插件和UniRx,需要自己导入一下,如果不想使用插件,可以把以下代码简单修改一下。using UnityEngine;using DG.Tweening;using UnityEngine.EventSystems;using QFramework;using UniRx;using UniRx.Triggers;/// <summary&原创 2021-07-27 16:02:57 · 2797 阅读 · 0 评论 -
从UnityHub下载2020.3.4版本Unity的安卓环境的配置方法
问题 最近从UnityHub下载的Unity下载完Android模块,里边的jdk,sdk信息一直寻找不到,自己下载一直提示版本不对,有点烦躁。图示:找到的解决方案:1.首先找到UnityHub安装的Unity路径下的json文件,如图所示。将其打开SDK相关:1.直接复制连接在浏览器中下载。2.将下载的文件解压到【2】所示的文件夹下。如下没有的文件夹需要自己创建。SDK相关 步骤跟上述一样SDK相关 1.直接复制连接在浏览器中下载。 2.解压出来之后.原创 2021-05-10 18:12:53 · 3430 阅读 · 4 评论 -
Unity中实现触摸屏中的单点,手指滑动,多点触屏的功能
触屏操作 当我们将项目移植到ios和android设备上,pc端的鼠标左键操作会自动适配为手机屏幕上的触屏(单点)操作,但也只是实现了鼠标的单点,比如手指滑动和多点触摸都无法检测。using System.Collections;using System.Collections.Generic;using UnityEngine;public class TouchMgr : MonoBehaviour{ //手指第一次触摸点的位置 Vector2 m_scenePos =原创 2021-05-09 19:01:25 · 7164 阅读 · 1 评论 -
Unity中简单加密实现软件限制使用次数和时间的小功能
Unity中实现一个简单限制软件打开的小功能最近公司需求是需要在电脑上根据MAC地址软件 才能被打开,陆陆续续的又提了时间限制和打开次数限制。 通过打包之后第一次运行获取MAC地址(用于临时展示,大家也可以将信息加密一下再保存)保存在文本中,每次打开软件会判断当前是MAC地址是否一样,不一样则软件退出。功能脚本:using System;using System.IO;using System.Net.NetworkInformation;using System.Text;using U原创 2021-04-25 22:11:49 · 1739 阅读 · 2 评论 -
Unity中实现一个手势输入判断方向的小功能
Unity中实现通过滑动屏幕,判断当前的手势是向上、下、左、右哪个方向滑动。思路:如下图所示,原点为起始点,箭头位置为手势滑动结束的位置,分别X轴方向和Y轴方向的数值进行比较,如果X的绝对值大于Y的绝对值,则是左右方向上的移动。如果该向量大于0则向右移动,反之小于0则向左移动。其余方向上的判断同理。代码如下:定义一个枚举,记录方向。public enum InputDirection{ NULL, //空 Right, //右 Left, //左 D原创 2021-04-15 14:53:12 · 875 阅读 · 0 评论 -
Unity中实现一个对象池
这里写目录标题一、对象池流程图二、案例测试一、对象池流程图总池子 将总池子作为单例模式供外部调用,含有根据名字获取总池子中的子对象池中的对象。将指定GameObject放回池子中三个方法。子池子 子池子中含有取池子中的对象,回收池子中的对象,两个功能。ReusableObject脚本 该脚本是池子中的对象需要继承它,根据实际情况对实现具体的逻辑,需要实现的方法OnSpawn()、OnUnSpawn(),调用是根据消息机制进行调用,在子池子中声明取和放回分别调用对应的方法。原创 2021-04-06 23:26:47 · 412 阅读 · 3 评论 -
Unity使用【UnityWebRequest】API下载文件并且显示下载进度
背景: 一个非常实用的小功能,平常项目中可能会有这个需求:**Unity中下载文件,并将下载进度显示出来。**今天总结一下!我们在下载的时候考虑的东西有很多,比如用户下载到了一半断开的情况,网络异常的情况等等。代码如下: 这里下载服务器端的视频为例,测试在下载完成后, request.downloadProgress返回的值大约在0.97左右,小于1,所以在下载完成后,我们用代码控制将进度条的value值等于1。 //进度条 private Slider my_Slider;原创 2021-03-05 15:47:05 · 6369 阅读 · 0 评论 -
Unity中免拖拽获取UI组件的功能
说明最近研究到一个功能脚本,在获取UGUI组件不用拖拽获取!脚本如下:获取UI组件的方法 //获取需要获取的UI组件 T类型:UI组件名字 private void GetUI<T>() where T:UIBehaviour { T[] uis = this.GetComponentsInChildren<T>(); for (int i = 0; i < uis.Length; i++) {原创 2021-03-03 22:42:18 · 997 阅读 · 3 评论 -
Unity加载场景的AB包
说明:通过Unity加载服务器端的场景的AB包,并且加载出来;直接通过AB包加载出来就可以加载场景,不需要再拖到Scene In Build窗口下。通过打包工具将场景打包,工具下载地址打包过程不再赘述使用UnityWebRequest简单实现public class sceneABLoad : MonoBehaviour{ //下载地址 private string loadPath = ""; void Start() { St原创 2021-02-03 11:30:05 · 3281 阅读 · 0 评论 -
Unity读取本地文件夹的照片并显示在Image上
说明: 最近经常根据需求修改界面的UI,于是索性改为外部读取照片并转换为Sprite,简单记录一下。实现:public class GetUIfile : MonoBehaviour{ private string UIPath = Application.streamingAssetsPath + "/UI/1.png"; public Image image; private void Awake() { TextureToSprite();原创 2021-02-02 14:03:09 · 3930 阅读 · 22 评论 -
AVProVideo插件实现文件夹中的视频文件循环播放
说明:最近项目需要循环播放一个视频列表,使用的是【AVProVideo插件】,发现只能一个视频的循环播放,不能实现一个文件夹下的所有视频的循环播放。解决如下:根据上图所示声明一个事件方法,形参与之对应。为MediaPlayer添加事件,这里实现的是当前视频播放完成后,在【FinishedPlaying】里实现播放下一个视频的逻辑。补充说明:在切换视频时,会看到UI后面的界面,可以在AVPro Video下的【Display UGUI】组件上设置默认纹理,我这里设置的时【 displayUGUI原创 2021-01-11 17:28:12 · 6063 阅读 · 9 评论 -
Unity中通过Process启动程序并传递数据
说明:最近根据项目上的需求,一个专题中有众多的场景,后决定采用【主场景+子场景】分开打包的方式,需要解决的是在主场景登陆进去之后需要将【用户ID】等数据传递到子场景中,一开始采用的是Socket通讯的方式传递,后来改为使用进程(Process)启动外部exe。所引用的命名空间为:System.Diagnostics1. 不带参数直接启动外部程序 Process.Start("启动的路径名字");2. 启动时传递参数传递多个参数时需要用【空格】分开 /// <param name=原创 2021-01-06 09:53:01 · 3142 阅读 · 0 评论 -
Unity-缓存池模块(可以跑通)
缓存池1.缓存池中没有,则创建2.缓存池中存在,则取3.加载采用Resources.load(name)根据名字加载,所以创建新对象时的名字,就是再次重用所取的名字,后续参数名字的一致保证了缓存池的实现。using System.Collections;using System.Collections.Generic;using UnityEngine;public class PoolMgr : BaseManager<PoolMgr> { //缓存池容器 p原创 2020-11-14 11:47:57 · 282 阅读 · 0 评论 -
Unity单例模式模板
单例模式基类1.减少单例模式重复代码的书写 (唯一共享变量)public class BaseManager<T> where T : new() { private static T _instance; public static T GetInstance() { if (_instance == null) _instance = new T(); return _instance; }原创 2020-11-09 22:03:15 · 630 阅读 · 0 评论