unity

Unity - UIWidgets 6. 显示列表

安稳与你 提交于 2020-01-29 16:17:08
为了更贴近游戏实际ui的效果和使用环境, 从而讨论上一节遗留的问题, 列表显示是必不可少的 参考 修改之前的HomeRoute, private Widget CreateListTest() { ListView listView = ListView.builder( scrollDirection: Axis.vertical, itemExtent: 20, itemCount: 100, itemBuilder: (context, index) => { return new Text(data: index.ToString()); } ); return listView; } private Widget GetWidget() { Scaffold scaffold = new Scaffold( appBar: new AppBar( title: new Text("首页") ), body: CreateListTest() ); return scaffold; } 创建了一个列表, 显示从0到99的数字, 每个列表项高度为20(逻辑高度), 效果如下 通过UIWidgets Inspector可以看到列表项是循环回收的(即看不到的列表项不作为一个UI节点存在), 但这个节点大概已经嵌套了四五十层... 对性能不太信任 显示背包道具

Unity浅析

坚强是说给别人听的谎言 提交于 2020-01-29 04:30:23
在分析PRISM项目的时候, 发现里面用到了Unity 这个Component, 主要用于依赖注入的。由于对其不熟悉,索性分析了一下,记载在此,以作备忘。 任何事物的出现,总有它独特的原因,Unity也是如此。 在Unity产生之前,我们是这么做的 在远古的时候,当我们需要在一个类A中引用另一个类B的时候,总是将类B的实例放置到类A的构造函数中,以便在初始化类A的时候,得到类B的实例。 1 public class A 2 { 3 B b; 4 public A() 5 { 6 B = new B(); 7 } 8 } 但是,当项目稍微大一点的时候,维护起来就显得异常吃力,尤其是当有Code Change的时候,如果类B有了一些修改(比如加入了带参构造等等),那么这种修改和测试将是异常难受的。 所以,为了解决最原始的问题,我们开始在类A的外部获取类B的实例,以便能够减轻依赖: 1 public class A 2 { 3 B b; 4 public A(B _b) 5 { 6 This.b = _b; 7 } 8 } 这样,只需要在外部实例化B,然后传入类A即可。这样做,虽然比原始做法方便了许多,然是在类A内部,依然存在着对类B的依赖。由于类B在系统中是唯一的,所以说当有许多个类似于类B的对象需要进行初始化的时候,这种工作量…谁能够想象呢? 有了问题,才会思考变化

unity FPSDisplay

风格不统一 提交于 2020-01-29 04:29:24
using UnityEngine; using System.Collections; public class FPSDisplay : MonoBehaviour { float deltaTime = 0.0f; void Update() { deltaTime += (Time.unscaledDeltaTime - deltaTime) * 0.1f; } void OnGUI() { int w = Screen.width, h = Screen.height; GUIStyle style = new GUIStyle(); Rect rect = new Rect(50, 50, w, h * 2 / 100); style.alignment = TextAnchor.UpperLeft; style.fontSize = h * 8 / 100; style.normal.textColor = new Color(5.0f, 5.0f, 5.5f, 1.0f); float msec = deltaTime * 1000.0f; float fps = 1.0f / deltaTime; string text = string.Format("{0:0.0} ms ({1:0.} fps)", msec, fps); GUI.Label(rect,

Unity3D中读取CSV文件

北城以北 提交于 2020-01-29 04:19:22
直接上代码 Part1: 1 using UnityEngine; 2 using System.IO; 3 using System.Collections.Generic; 4 5 public class CSV 6 { 7 static CSV csv; 8 public List<string[]> m_ArrayData; 9 public static CSV GetInstance() 10 { 11 if (csv == null) 12 { 13 csv = new CSV(); 14 } 15 return csv; 16 } 17 private CSV() { m_ArrayData = new List<string[]>(); } 18 public string GetString(int row, int col) 19 { 20 return m_ArrayData[row][col]; 21 } 22 public int GetInt(int row, int col) 23 { 24 return int.Parse(m_ArrayData[row][col]); 25 } 26 public void LoadFile(string path, string fileName) 27 { 28 m_ArrayData.Clear();

Unity-打开Windows文件夹浏览器

好久不见. 提交于 2020-01-29 03:26:23
功能介绍: 打开Windows文件夹浏览器,返回选择的文件夹路径。 备注: 打开的浏览器文件夹始终置于最顶层。 visibleInBackground要设置为true。 效果如下: 代码如下: using System; using System.Runtime.InteropServices; namespace Folder { public class PathBrowser { // 浏览对话框中包含一个编辑框,在该编辑框中用户可以输入选中项的名字。 const int BIF_EDITBOX = 0x00000010; // 新用户界面 const int BIF_NEWDIALOGSTYLE = 0x00000040; const int BIF_USENEWUI = (BIF_NEWDIALOGSTYLE | BIF_EDITBOX); const int MAX_PATH_LENGTH = 2048; public static string FolderBrowserDlg(string defaultPath = "") { OpenDlgDir dlg = new OpenDlgDir(); dlg.pszDisplayName = defaultPath; dlg.ulFlags = BIF_USENEWUI; //设置hwndOwner==0时

Unity - UIWidgets 4. 添加图标显示

十年热恋 提交于 2020-01-28 20:11:49
Material Icon字体下载(github) 前面的返回按钮, 以及自己试验的一些Icon都不显示, 然后回去翻UIWidgets的README public class UIWidgetsExample : UIWidgetsPanel { protected override void OnEnable() { // if you want to use your own font or font icons. // FontManager.instance.addFont(Resources.Load<Font>(path: "path to your font"), "font family name"); // load custom font with weight & style. The font weight & style corresponds to fontWeight, fontStyle of // a TextStyle object // FontManager.instance.addFont(Resources.Load<Font>(path: "path to your font"), "Roboto", FontWeight.w500, // FontStyle.italic); // add material icons,

Unity 切换加载场景 SceneManager.LoadScene

好久不见. 提交于 2020-01-28 13:05:45
SceneManager.LoadScene public static void LoadScene(int sceneBuildIndex,SceneManagement.LoadSceneMode mode = LoadSceneMode.Single); public static void LoadScene(string sceneName,SceneManagement.LoadSceneMode mode = LoadSceneMode.Single); 在构建设置中通过其名称或索引加载场景。 例子1:通过场景名来加载,并且不销毁之前的场景 using UnityEngine; using UnityEngine.SceneManagement;//使用场景管理器 public class ExampleClass : MonoBehaviour{ void Start() { //使用LoadScene加载场景 //第二个参数AddSceneMode.Additive表示当前场景不销毁,并加载需要的场景 SceneManager.LoadScene("OtherSceneName", LoadSceneMode.Additive); } } 例子2:通过索引来加载,销毁当前场景 using UnityEngine; using UnityEngine

Unity3D AssetBundle自我总结(打包)

落花浮王杯 提交于 2020-01-28 12:14:33
打包AssetBundle代码 `using UnityEditor; using System.IO; using UnityEngine; public class CreateAssetBundles { //创建打包按钮 [MenuItem(“Assets/Build AssetBundles”)] static void BulidAllAssetBundles() { //创建文件夹 string assetBundleDirectory = “Assets/StreamingAssets”; if (!Directory.Exists(Application.streamingAssetsPath)) { Directory.CreateDirectory(assetBundleDirectory); } //打包 BuildPipeline.BuildAssetBundles(assetBundleDirectory, BuildAssetBundleOptions.None, EditorUserBuildSettings.activeBuildTarget); } }` 命名规则:为了方便管理,我们通常命名AssetBundle的时候带有文件夹路径: 我在这里根据文件夹命名的Scenes1/Building1 (不去分大小写)

unity shader 着色器实例 代码+详解注释 【模型顶点抖动,顶点无节操的随机升降抖动效果】

筅森魡賤 提交于 2020-01-28 05:36:17
如果代码中有什么不清楚请查看以下基础知识 Shader基础知识 unity3d 中 七种坐标知识详解 随机抖动的效果 该效果随机上下抖动顶点,适合给静态模型增加动感。类似小时候我们看的一些定格动画或剪纸的效果。有些2d游戏也会使用类似的功能,这是3d版本,2d同理。 shader的随机数 shader中没有随机函数。所以需要我们自己编写。代码中出现的随机数实现方式是网上摘抄的,由于发现了很多帖子都有这段代码,所以没法注明出处。有人知道原版是谁的请告诉我,我好注明出处。 Shader "Unlit/simple" { //变量接口 Properties { //线段长度 _LineLength ( "Length" , float ) = 1. //线段颜色 _LineColor ( "Color" , COLOR ) = ( 0 , 1 , 0 , 1 ) } //着色器正文 SubShader { //着色器程序块 Pass { Tags { "RenderType" = "Opaque" } LOD 200 CGPROGRAM # pragma target 5.0 //顶点着色器,用于处理位置信息 # pragma vertex vert //片元着色器,用于处理颜色 # pragma fragment frag //几何着色器,DirectX 10新增的

XR: OpenVR Error! OpenVR failed initialization with error code VRInitError_Init_PathRegistryNotFound

白昼怎懂夜的黑 提交于 2020-01-27 23:37:07
XR: OpenVR Error! OpenVR failed initialization with error code VRInitError_Init_PathRegistryNotFound 问题描述 当我在Unity中运行场景时,出现以下错误:'VR:OpenVR错误!OpenVR初始化失败,错误代码为VRInitError_Init_PathRegistryNotFound:“找不到安装路径(110)”! 问题原因 项目中使用了MRTK的工具,但是没有在unity的场景中引入 解决方法 来源: CSDN 作者: 靑岚 链接: https://blog.csdn.net/weixin_43884551/article/details/104095628