Unity3D
Sunny-cxr
要像个大男孩 风吹又日晒 生活自由自在
展开
-
UnityWebGL移动端兼容性说明
UnityWebGL的引擎仍然包含许多为其他平台设计的功能和系统,导致空包+中文字体打包后的大小就在25MB,相对于其他web3d引擎来说在移动端的加载时间很慢。总体来说,印证了Unity官方文档中所说明的“当前的移动设备通常不够强大,并且没有足够的内存来支持Unity WebGL内容。使用上图附带代码测试,重新复现之前的问题,触发此循环逻辑后,项目重新加载,进而网页崩溃。加载结束,进入场景后,在工厂模型内部游览,仅旋转视角浏览过程中,突发网页崩溃,。初步定位原因:未知,可能是webgl渲染导致崩溃。原创 2023-08-10 17:33:30 · 3795 阅读 · 9 评论 -
Unity UI优化
4.TexturePacker批量打图集工具。1.压缩UI图片资源减少内存和显存占用。3.SpriteMesh减少填充率。2.动态图集减少批处理。原创 2023-07-04 10:36:13 · 430 阅读 · 0 评论 -
PhotonNetwork.GetCustomRoomList使用方法
看到很多博客说PhotonNetwork.GetCustomRoomList()的第二个参数给null,但实际这个方法内部存在null判断,会进行报错。调用虽然成功了,但有可能因为LobbyType.SqlLobby类型的房间是不会自动触发。并且很关键的一点,当由玩家从房间退出后的短时间内,无论时自动还是通过调用。查看官方文档可知,第二个参数sqlLobbyFilter是一个SQL。来刷新房间列表,都不会获取到房间人数减少。原创 2023-05-30 15:39:03 · 248 阅读 · 0 评论 -
在Unity中对接运动平台协议
为了让运动平台实时随动Unity中物体,使用的十七字节3轴随动协议。原创 2023-05-10 15:52:54 · 166 阅读 · 0 评论 -
环绕打出射线,并根据碰撞次计算衰减比例
//一次环绕的射线次数 private int raycastCount = 1000; //衰减百分比(比如打到一个物体,就衰减到0.9,二次就衰减到0.81) private float attenuation = 0.9f; //射线碰撞信息 private Dictionary<int, RaycastHit[]> raycastHitsMap; /// <summary> /// 绕一圈打出射线,记录...原创 2021-11-25 14:45:16 · 2351 阅读 · 0 评论 -
ILRuntimeDemo理解
方法调用方式//1.通过AppDomain调用方法//参数:类型全名(命名空间+类型)、方法名、实例、实参列表appdomain.Invoke("XX.XXX", "XXXX", null, null);//2.通过IMethod调用方法//预先获得IMethod,可以减低每次调用查找方法耗用的时间IType type = appdomain.LoadedTypes["XX.XXX"];//根据方法名称和参数个数获取方法IMethod method = type.GetMethod("X原创 2021-11-08 13:08:52 · 2658 阅读 · 0 评论 -
Unity 写出PDF到本地(PC)
首先导入itextsharp.dll(及其依赖)到Plugins文件夹。其次,看下面代码。一个写入表格的例子,供学习参考使用:using System.Collections.Generic;using System.IO;using iTextSharp.text;using iTextSharp.text.pdf;public static class WritePDFHelper{ /// <summary> /// 写入PDF /// </原创 2021-10-20 17:05:17 · 2079 阅读 · 0 评论 -
TexturePacker命令行拉起参数
命令之间无需换行,各命令间添加空格即可。Build Path为图集生成路径,Source Path为图片源路径。拉起TexturePacker\bin\TexturePacker.exe后将命令作为参数传入即可将Source Path中的图片打为图集生成在Build Path中。–sheet {Build Path}.png–data {Build Path}.tpsheet–format unity-texture2d–trim-mode Polygon–algorithm Polygon原创 2021-08-31 15:53:06 · 291 阅读 · 0 评论 -
Unity 机器学习 ML-Agents 环境搭建
Github仓库Demo仓库官方仓库文件夹结构com.unity-ml-agents:Unity插件包gym-unity:OpenAI的gym使用(不需要安装)ml-agents:Python算法实现库ml-agents-envs:Python和Unity进行通信的环境环境搭建安装anaconda安装cuda安装cudnn安装torch安装tensorflow安装1-3参考安装tensorflow-gpu参考安装torch参考检查Anaconda是否成功安装:c.原创 2021-04-08 18:26:40 · 686 阅读 · 0 评论 -
Unity屏幕截图保存(适应分辨率变化)
目录Unity屏幕截图保存代码Unity屏幕截图保存截取任意分辨率下Canvas内任意位置任意大小的recttransform的内容。代码 public IEnumerator SavePic(Canvas canvas, RectTransform target, string savePath) { yield return new WaitForEndOfFrame(); //Canvas的sizeDelta Vector3 can原创 2020-12-17 17:52:55 · 930 阅读 · 0 评论 -
UnityWebgl平台与JS交互、使用UnityWebRequest对接
UnityWebgl平台与JS交互、使用UnityWebRequest对接Unity与前端js交互web数据请求Unity与前端js交互在UnityWebgl平台上,经常会从前端获取参数,如token、host等,使用jslib与前端js代码进行交互。只需要在Plugins文件夹中创建一个xxx.jslib文件即可。jslib文件代码如下:mergeInto(LibraryManager.library, { getUrlParams: function (defaultValue) { va原创 2020-05-19 15:10:30 · 5745 阅读 · 0 评论 -
Vector3的Angle、Dot、Cross
using UnityEngine;public class Dot_Cross : MonoBehaviour{ private Animator animator; private CharacterController characterController; public Transform target; private void St...原创 2020-03-04 14:44:25 · 624 阅读 · 1 评论 -
使用对象池实现的音效池管理类
AudioPoolManagerGitHub:sunny2019/AudioPoolManager简介:一个通过对象池实现的音效池,可以设置音效池中AudioSource的最小数量,当AudioSource数量不足时可动态的生成AudioSource,使用完成后会自动销毁,保持音效池中AudioSource的最小数量。使用过程:将此脚本挂载在物体上,设置音效池中AudioSource...原创 2020-02-17 11:48:01 · 626 阅读 · 0 评论 -
Unity3D 性能优化总结
优化相关前提Unity游戏安装包大/运行卡的原因: mono虚拟机(跨平台基础、简洁开发提高效率)Drawcallhttps://zhuanlan.zhihu.com/p/26386905https://www.zhihu.com/question/36357893SetPasscall DrawCall和Batcheshttp://www.manew.com/4702.ht...原创 2020-02-17 11:45:39 · 564 阅读 · 0 评论 -
高级编辑器主题--编辑器功能拓展总结
菜单栏分类菜单栏分类主要使用 MenuItem 的 priority 优先级属性实现,其优先级默认值为1000,优先级越小,在列表中的位置越靠上。相邻的两个按钮之间 priority 如果相差11(或者大于11),就相当于做了一个分类。 //public MenuItem(string itemName, bool isValidateFunction, int priority);...原创 2020-02-16 23:11:18 · 262 阅读 · 0 评论 -
常用API和常见错误总结
APIUnity事件函数的执行时机和先后顺序void Awake(){ Debug.Log("Awake");}void OnEnable(){ Debug.Log("OnEnable");}public void CustomRethod(){ Debug.Log("CustomRethod");}// Use this for initia...原创 2020-02-16 23:08:20 · 1939 阅读 · 0 评论 -
简单的UI框架(单例脚本)
单例脚本Singleton.csusing System;/// <summary>/// /// 使用方法:/// 1.需要单例的类继承Singleton<T>/// 例如:class UIManager:Singleton<UIManager>/// /// 2.在代码内调用一次 UIManager.Init();/// 之后即可使用U...原创 2020-02-16 23:05:39 · 499 阅读 · 0 评论 -
任务计时器PETimer
任务计时器PETimer分为帧任务和时间任务两部分[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Nk16d7Uq-1581865431258)(https://s2.ax1x.com/2019/03/08/kzz0Rx.md.jpg)]using System.Collections;using System.Collections.Generic;usi...原创 2020-02-16 23:04:58 · 515 阅读 · 0 评论 -
异步加载场景与异步加载游戏资源
异步加载场景与异步加载游戏资源Application.LoadLevel 加载关卡在同步加载游戏场景的时候通常会使用方法Application.LoadLevel 加载关卡。该方法在执行完Application.LoadLevel方法后,会把该场景在 Hierarchy 视图中的所有游戏对象加载至内存当中。因为Application.LoadLevel,若是场景内游戏对象过多,则会在加载的瞬...原创 2020-02-16 23:02:52 · 580 阅读 · 0 评论 -
简单的对象池
对象池模式对象池模式(The Object Pool Pattern)是单例模式的一个变种,它提供了获取一系列相同对象实例的入口。在Unity中使用对象池可以很好的减少实例化生成和销毁的次数,从而达到性能优化的目的。ObjectPool.csusing System.Collections;using System.Collections.Generic;using UnityEngi...原创 2020-02-16 23:01:40 · 106 阅读 · 0 评论