2017-10-16 16:50:32 hopewsw 阅读数 410
  • Unity3D插件学习:EasyTouch

    Unity3D开发中,熟练使用插件是对一个成熟开发者的必要要求。EasyTouch是一款高质量的、应用广泛的Unity3D插件,它依托于UGUI系统,对项目开发中常用的UI组件操作方式进行分类、归纳和实现,最终为开发者提供了一个简单易操作的设置界面,是初学者必须掌握的一款强有力的工具插件。 本套课程针对EasyTouch的使用进行详细讲解,帮助初次接触该插件的开发者迅速上手,熟练使用这一强大工具。

    344 人正在学习 去看看 伍晓波
2015-07-06 16:53:17 rightandwill 阅读数 396
  • Unity3D插件学习:EasyTouch

    Unity3D开发中,熟练使用插件是对一个成熟开发者的必要要求。EasyTouch是一款高质量的、应用广泛的Unity3D插件,它依托于UGUI系统,对项目开发中常用的UI组件操作方式进行分类、归纳和实现,最终为开发者提供了一个简单易操作的设置界面,是初学者必须掌握的一款强有力的工具插件。 本套课程针对EasyTouch的使用进行详细讲解,帮助初次接触该插件的开发者迅速上手,熟练使用这一强大工具。

    344 人正在学习 去看看 伍晓波

 一直想弄个MMORPG ,发现了这个牛逼的插件,但我是小白,苦于网上没教程,就尝试下翻译技术文档,我技术渣英文渣,只求抛砖引玉引大神出来,有错欢迎指出来,我共享翻译文档,希望大神更正,我会在更正错误的地方打括号留下大神的名字重新上传翻译文档(:D)。

翻译文档链接:http://yunpan.cn/cQC2J4GVzQcDf(提取码:777a)

UlitimateMMORPG插件链接http://pan.baidu.com/s/1sjBPMaT

                       http://yunpan.cn/cQCWyhfcTPXrG(提取码:3b42)

Csdn博客地址:http://blog.csdn.net/rightandwill





Page3

You can use simple mathematical operations in code and do anythingyou want with  them. To declare thevariable, write its type and then its name. All lines ends with «;» symbol. Youcan comment some useful information using «//».

你可以通过他们使用最简单的数学运算符在代码中做你任何想做的事。只需要声明变量,写明类型和它的名字。所有行的末尾要加;符号。你可以使用//来注释一些有用的信息。

C# code:

int x;

x=2;

int y=3; // Itis a comment. Look, you can declare and bind a value at one time

      //这是一个注释。看,你可以一次性地声明和绑定一个值

int a, b; //You can declare a few variables of one type at the same time

      //您可以在同一时间声明一种类型的变量

a = (x * y)/2 -6; // Calculate anything you want

//计算你想要的任何东西

 But what will we do with our variables andcalculations? If you try to write a

C# script withthe previous text, the error will appeared. It will so because we need

a function,where the calculations will happen.

   但是我将用变量和计算做什么?如果你试着用上述文本写一份C#脚本,将会发生错误。之所以是这样是因为我们需要一个用以计算的函数。

 Function is a place in thescript, where all events will happen. Unity has a few main functions that youneed to know:

所有的事件都在函数中发生。Unity有一些你需要知道的主函数。

1)     Awake — called one time beforethe game starts (all objects already initialized);

在游戏开始前被执行一次(所有物体已经被初始化)

2) Start —called one time after Awake and before Update functions;

         在函数Update前Awake后执行

3) Update —called every frame. For instance can be used for translating a GameObject

somewhere;

          每一帧都被执行。例如可用于改变某处GameObject的位置;

4) OnGUI —called every frame. Using for graphic (buttons, labels, windows and etc.).

每一帧都被执行。用于图形(按钮、标签、窗口等)。

 So, we will use «Awake»function for our calculations. Every function is declared in the way like this:<type> <name> «() {  }». Thetype of our function will be «void» because it returns nothing. Create new C#script in Unity and called it as you want. Then delete green comments and twofunctions - Start and Update. And then write this between «{» and «}»:

   所以,我们将用Awake函数来计算。每个函数将会以如下方式申明:: <类型> <名字> «() {  }»。我们使用的函数类型是void型的,因为它返回空值。在Unity中创建一个c#脚本并取一个你喜欢的名字。然后删除绿色注释和2个函数-Start和Update。然后在两个括号之间写下如下代码:

C# code:

int x;    //Don’t copy «C# code:» 别复制c#code

void  Awake(){

 x=5-2;

 Debug.Log(«The result is:»+x);    // Method for debugging. It willwrite the

                               // result in theconsole调试方法。它的结果将被写在//console中。

}

If you writethis script right (you can just copy&past it), add this script to the MainCamera and press «Play» button, you will see the result in the consolewindow!You see, methods do something with variables.

如果你正确地写出了此脚本(你可以只是复制粘贴),把这个脚本添加到主摄像机上,然后按下Play键,你将在控制台中看到结果。你看,我们使用变量做了点事。

 

«If» Statement       If语句

   Veryoften the action depends on variable. Or variable depends on another variable.(e.g. if health more than 0, the Player will be alive. In other way he willdie).To make this possible, «If» Statement exists.

    行为经常依赖于变量。或者变量依赖于另一个变量。(比如如果生命大于0,玩家会活着。否则玩家将死亡)。要尽可能地使用if语句。

   


2015-07-06 22:15:03 rightandwill 阅读数 324
  • Unity3D插件学习:EasyTouch

    Unity3D开发中,熟练使用插件是对一个成熟开发者的必要要求。EasyTouch是一款高质量的、应用广泛的Unity3D插件,它依托于UGUI系统,对项目开发中常用的UI组件操作方式进行分类、归纳和实现,最终为开发者提供了一个简单易操作的设置界面,是初学者必须掌握的一款强有力的工具插件。 本套课程针对EasyTouch的使用进行详细讲解,帮助初次接触该插件的开发者迅速上手,熟练使用这一强大工具。

    344 人正在学习 去看看 伍晓波


Page4

 

It has this syntax: if(<condition>){ <Do something>}.

它的语法如下:if(<条件>){<执行>}

Previous examples were too boring, so let’s create an NPC Cube. ThePlayer will be able to set its name and its side: a friend or an enemy. Socreate new C# script and paste this (be sure you understand how it happens):

   之前的例子太枯燥了。让我们来创建一个NPC立方体。玩家将能设置他的名字和选边:友军或敌军。那来创建一个新的C#脚本并粘贴它吧(务必要理解它是如何产生的):

 

 

C# code:

public string NPC_name;  // This variable is public, so it can be setfrom the inspector

                      // 此变量是公用的,所以它可以在检视面板(inspector)设置

public bool enemy;      // Also set from inspector. False -friend, true – enemy

                     // 可以在检视面板设置

 

void Start(){

gameObject.name = NPC_name; // Set GameObject name to the variable

                           //赋值游戏对象名称给变量

 if(enemy==false){           // Friend   友军

        // gameObject.renderer.material.color =Color.green;   //此行代码unity3d5.0不能用

        gameObject.GetComponent<Renderer>().material.color = Color.green;  //5.0代码

 }else{                         // Another way (enemy)另一面(敌军)

//gameObject.renderer.material.color = Color.red;       //此行代码unity3d5.0不能用

gameObject.GetComponent<Renderer>().material.color =Color.green;   //5.0代码        

 

 }

}

Copy&paste this. Then create a Cube, let the camera see it andadd this script.If you make all right, in the «Play» mode the Cube’s color andits name in Hierarchy will depend on the variables’ values that you can set inthe inspector.

   复制并粘贴此脚本。然后创造一个立方体,让摄像机对准它并添加此脚本。如果你所做一切都是正确的,在层级面板(Hierarchy)Play模型中立方体的颜色和名字将决定于变量值,而此变量你可以在检视面板(inspector)中设置。

 

“Arrays”        “数组”

Sometimes you will need a thing where you can “put” variables like abag. Forexample, bag’s items. And then “Arrays” will help.There are a few types of arrays.They are the similar to the types of variables— int, float, string, bool and etc. Also“ArrayList” exists but we won’t have a good look at them.

有时你需要一个能存放变量的容器。比如袋子。然后数组将提供帮助。这里有一些数组的类型。他们和变量很像—整型,浮点型,字符串型,布尔型等等。因此“列表”存在但我们不必深究它们。

An array declares like <type>[ ] <name>. There is anexample of array’s declaring and the working with it.

一组数组被可以按< 类型>[]<名称>这样的形式声明。这里可举个数组声明和执行的例子。

C# code:

 

public string [ ] bag;                        // It’s public, so set the values in theinspector

void Start(){

foreach(string item in bag){               // It is “foreach” cycle. For each element in  

  Debug.Log(string);                     // array “bag”script will dowhat is written after

}                                      // “{” andbefore”}” (Debug.Log())

                                       //并不懂此段程序

}                        

 

2015-07-07 01:04:48 rightandwill 阅读数 477
  • Unity3D插件学习:EasyTouch

    Unity3D开发中,熟练使用插件是对一个成熟开发者的必要要求。EasyTouch是一款高质量的、应用广泛的Unity3D插件,它依托于UGUI系统,对项目开发中常用的UI组件操作方式进行分类、归纳和实现,最终为开发者提供了一个简单易操作的设置界面,是初学者必须掌握的一款强有力的工具插件。 本套课程针对EasyTouch的使用进行详细讲解,帮助初次接触该插件的开发者迅速上手,熟练使用这一强大工具。

    344 人正在学习 去看看 伍晓波

Page6

 

5) Add the script to the «Portal1» andassign «Portal2» as the <Portal2> variable.

  添加脚本到“Portal1”并标记“Portal2”作为“Portal2”的变量。

If you make everything right, in the “Play” mode you will see theendless Cube’s falling. When he touches the first portal, his position willchange to the secondportal’s position. And he will fall again.

   如果你所有的步骤都正确,在“播放模式”下你最终将看到Cube跌落。当他碰到第一个portal的时候,他的位置将变为第二个portal的位置。然后他将再次跌落。

           

 

There and back again: C#, JavaScript, PHP and MySQL

回到开始部分:C#, JavaScript, PHP and MySQL

 

The course of programming hasended. It wasn’t a learning in fact, but if you understand those two chapters,it will be easier for you to create your games usingUltimate MMORPG Kit (andUnity in general). Perhaps you will change some scripts for your purpose. Ifyou want to know more about scripting in Unity, read the UnityScriptingReference (http://docs.unity3d.com/Documentation/ScriptReference/index.html).

编程的课程结束了。事实这算不上是学习,但如果你懂得这两章,那你使用UltimateMMORPG插件创建你的游戏将会很轻松(主要是指使用Unity)。也许出于你自己的目的你将改变一些脚本。如果你想知道Unity中更多的脚本,请阅读UnityScripting参考手册(http://docs.unity3d.com/Documentation/ScriptReference/index.html)。

It is important to understand, how theconnection with MySQL Databaseworks, so there will be a little bit about that.

理解如何连接MySQL Databaseworks是非常重要的事情。所以这里将花一点时间来讲解此内容。

C# scripts work with the game. Itrealizes practically all things like Player’smoving, fightings, NPCs and etc.But if there is any information that needs to be save(new level, made quest,new items and etc.) the C# script will collect this information and send to theJavaScript script.

C#脚本在游戏中执行。它实现了几乎所有的东西比如玩家的移动,战斗,NPC等。但是如果有任何信息需要被保存(新的关卡,做任务,新的物品等),C #脚本将收集这些信息,并发送到JavaScript脚本。

Javascript script is like a bridgebetween the Player’s computer and hosting.JavaScript will send received data(from C# script) to the PHP script which exists in the hosting.

JavaScript脚本像是连接玩家电脑和主机之间的桥梁。JavaScript会发送接收数据(来自于c#脚本)到主机中的PHP脚本。

PHP scripts connect with the MySQLDatabase and using MySQL queries write/receive the information to the Database.Then PHP script sends the answer to the JavaScript. And depending on theJavaScript received information, C# script will do something.

PHP脚本连接MySQL数据库并使用MySQL查询读写或接收来自数据库的信息。然后PHP脚本发送结果到JavaScript。依靠JavaScript取得信息后,C#脚本会执行。


2017-12-23 23:17:28 u012632851 阅读数 3492
  • Unity3D插件学习:EasyTouch

    Unity3D开发中,熟练使用插件是对一个成熟开发者的必要要求。EasyTouch是一款高质量的、应用广泛的Unity3D插件,它依托于UGUI系统,对项目开发中常用的UI组件操作方式进行分类、归纳和实现,最终为开发者提供了一个简单易操作的设置界面,是初学者必须掌握的一款强有力的工具插件。 本套课程针对EasyTouch的使用进行详细讲解,帮助初次接触该插件的开发者迅速上手,熟练使用这一强大工具。

    344 人正在学习 去看看 伍晓波

版本:unity 5.6  语言:C#

 

 总起:

Android平台,虽然与IOS开发类似,但因为其硬件没有完全的标准化,所以会出现各式各样的问题。这一点在官方文档的第一段就提到了。

 

Unity Android基本环境的搭建还是比较容易的:

1.Unity本身没有下载Android插件的,首先 File -> Build Settings -> [切换到Android] Open Download Page 下载插件;

 

2.安装JDK,我使用的是Java8,不知道新出的Java9能不能用:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

 

3.安装SDK,这边我推荐安装Android Studio,再在其中中安装SDK:https://developer.android.com/index.html(进入该网页可能需要科学上网,然后下载SDK具体的包现在直连下载都很快了,不需要去网上找网友提供的包了);

 

4.安装Android模拟,我这边选择的是Nox英文版;

 

5.如果需要使用IL2CPP,安装一下NDK,5.6.3需要的版本是r10e,不要下错了。

 

Unity Remote

Unity远程调试插件,适用于Android、IOS和tvOS,一开始我以为这个可以直接在Unity中调试Android,实则不能,所以这个功能很鸡肋,不过也有他的使用场景,所以还是介绍一下吧。

 

调试步骤:

1.首先在Google Play中找到Unity Remote 5应用,把它下载安装到Android手机中,如果没有科学上网的同学,可以在百度上找一下;

 

2.将手机插上USB接口,允许USB调试,手机端就准备完成了,模拟器方面,我测试了3种:Genymotion可以直接运行,而Nox和Bluestacks没有效果;

 

3.接下来就是Unity中的设置,通过Edit -> Project Settings -> Editor,找到Unity Remote选项,将Device更改成Any Android Device:

 

 

4.然后直接运行Unity工程就会看到效果。

 

所以这个是做什么用的呢?首先大家可以理解为Android手机为一个扩展屏,然后Android手机的触屏输入、加速度、陀螺仪、相机、指南针、GPS和摇杆可以作为Unity工程的输入。

 

再然后……就没了,就多了个测试输入的功能,如果想要测试真机运行情况还是要打成APK在手机上运行。

 

这边再说一下两种特殊的情况:

1.如果是多台Android设备连接电脑的情况下,Unity会自动寻找第一台它找到的设备,而不能手动配置;

 

2.在手机端的显示图像质量很差,可以在Unity Remote的菜单中设置Compression为PNG,Resolution为Normal,图像效果就不会有损失了,但会占用更多的带宽。

 

出包界面:

在我们打包工程时,就会用到以下的一个界面:

 

 

 

 

♦ Texture Compression

图片纹理压缩格式,默认为ETC。

 

♦ Build System

在构建Android项目时最需要了解的就是这边两种Build System的区别:

 

1.Internal(Default)

这是一种比较传统的构建方式。可以这么说,开发纯Android项目时,过去主流使用的Eclipse就是使用该种构建,是一种ADT的构建方式。

 

打包一个APK经由以下几个步骤:

a.准备并打包Unity的Assets;

b.编译脚本;

c.处理Plugins插件;

d.如果Split Application Binary被勾选,会拆分资源到APK和OBB中;

e.使用AAPT打包Android资源;

f.将工程提供的Mantifest文件和第三方library的整合在一起;

g.将Java代码编译成DEX;

h.如果勾选了IL2CPP Scripting Backend,构建IL2CPP的包;

i.优化APK和OBB包。

 

2.Gradle(New)

Gradle是一种最新的打包方式,Android Studio就是使用该方式进行构建。这种构建方式会对项目进行更加严格的检验,使打出来的包更加稳定,总之是比较推荐的。

 

现在一个比较尴尬的情况是在整合第三方包时,网上大多数教程都是Eclipse时代的,而现在最好是使用Google推荐最新的Android Studio进行整合……两个IDE,虽然大家说学好一个,另一个不难……哎,出包这块Android确实比IOS耗精力的多。

 

♦ Export Project

勾选该选项能导出Unity工程为Android工程,Internal(Default)是不能导出为工程的,需要Eclipse的ADT项目,就选择Build System中没有介绍的第三个选项ADT(Legacy)(感觉ADT选项和Internal是一个意思,不知道Unity为什么要这么设置)。

 

至于Android Studio的工程,当然ADT导出的也能用,最好是选择Gradle进行导出。

 

♦ Development Build

如果该选项被勾选,Unity会设置一条分析隧道并启用CheckJNI,然后下面两个选项Autoconnect Profiler和Script Debugging也能被勾选。

 

Script Debugging应该就是Unity的日志信息了,但另一个选项不是很理解,Profiler指的是Unity的性能分析器吗?(希望有知道的大神可以留一下言)

 

Player Settings界面:

在上面的界面中点击player settings,那么Inspector窗口就显示该界面了。

 

前三个选项Resolution and Presentation、Icon和Splash Image和之前介绍的PC平台的内容其实大同小异,有需要的可以参考一下之前的文章,这边就不再多说了。

 

♦ Other Settings Rendering

 

 

 

 

Color Space 颜色空间,一般认为手机只支持Gamma空间,不过看了一下说是Android 4.3以上和OpenGLES3以上支持Linear了;

 

Auto Graphics API,Unity自动选取图像API,默认选取GLES3.1,如果设备不支持,会选择GLES3或GLES2。取消勾选后,移除GLES2的选项会出现两个选项Require ES3.1和Require ES3.1+AEP,可以强制使用3.1;

 

Multithreaded Rendering 多线程渲染,在主线程CPU利用率较高的情况下提升性能;

 

Static Batching 静态批处理,降低Drawcall,优化性能,和下面一个选项一样必勾选;

 

Dynamic Batching 动态批处理;

 

GPU Skinning 启用DX11/ES3的一种蒙皮技术;

 

Graphics Jobs(Experimental) 将图形渲染循环运行至其他CPU核心,只有Vulkan图形API才支持,实验性质的选项,可能会导致工程不稳定;

 

Virtual Reality Supported VR支持;

 

Protect Graphics Memory 强制图形缓冲显示经过硬件的保护路径,设备不支持则该选项无效。

 

♦ Other Settings Identification

 

 

 

 

Package Name 包名,Google商城的唯一ID,IOS和Android共享该选项;

 

Version 版本号,IOS和Android共享该选项;

 

Bundle Version Code 内部版本号,保证每次发布新版本大于之前的数字就可以;

 

Minimum API Level 最低API等级;

 

Target API Level 打包API的等级。

 

♦ Other Settings Configuration

 

 

 

 

Scripting Backend 脚本,IL2CPP和Mono2x,Mono2x就是C#,而IL2CPP是说将C#转成CPP,其中IL2CPP中的IL是C#编译后的中间语言;

 

API Compatibility Level 脚本API的版本:.Net2.0和.Net2.0 Subset;

 

Disable HW Statistics 不将硬件统计的信息发送给Unity官方,只有专业版才能勾选;

 

Device Filter 选择应用程序在指定CPU上运行:ARMv7、x86;

 

Install Location 指定程序安装的位置;

 

Internet Access 网络访问权限;

 

Write Permission sd卡写入权限;

 

Android TV Compatibility 安卓TV兼容选项;

 

Android Game 将应用程序标记为游戏;

 

Android Gamepad Support Level 游戏手柄支持等级;

 

Scripting Define Symbols 脚本编译时的标志设置;

 

♦ Other Settings Optimization

 

 

 

这边的选项基本和PC端的差不多,不同的我用粗体标注了。

 

Prebake Collision Meshes 只在build游戏时添加碰撞盒;

 

Keep Loaded Shaders Alive 保证Shader不会被卸载;

 

Preloader Assets 预先读取的Assets列表;

 

Stripping Level 代码剥离等级,只有IL2CPP才能使用;

 

Enable Internal Profiler 启用内部分析器,允许logcat获取设备分析的数据;

 

Vertex Compression 顶点压缩,选择模型会压缩的数据,比如可以选择everything,然后去掉positions和lightmap UVs。当然每个每个模型在导入时,可以设置独立的该参数,会覆盖掉该选项;

 

Optimize Mesh Data 优化Mesh数据,勾选该选项会移除材质所不需要的Mesh数据,例如tangents、normals、colors、UV。

 

♦ Publishing Settings

 

 

 

 

Keystore 可以创建密钥库,在对接某些第三方库时需要一个密钥库,在你指定了一个密钥后,每次重启Unity后打包API都会要求输入密码;

 

Split Application Binary 将包体分割成APK和OBB,在Google Play Store上发布100MB以上的应用程序时,需要勾选,不过我们这边连Google都上不去,所以并没有什么用。

 

总结:

这边介绍的主要是官方文档上提供的知识,Android和Unity对接的文章一搜一大把,当然很多是过时的。

 

这边个人推荐的对接方式是Android Studio打包aar给Unity使用,个人原本计划打算写一篇相关的博客的,不过还是得看时间了。这边介绍另一位大神的博文:http://blog.csdn.net/zhangdi2017/article/details/63254563。大家可以参考一下。

 

个人:

最近买了很多软件工程的书,主要是Bob大叔的几本书还有重构、设计模式什么的。

 

一开始看《程序员的职业素养》,想着打发一下闲暇的时间,可我看了第一章,我着迷似的阅读该书,程序在出包时也忍不住翻上几页。花了三天时间把它看完了,对里面的一些观点不能再认同。

 

尝试了一下单元测试,花了几个小时把我之前设计的UI框架理清了,感觉也是很棒,不管修改了什么东西,只要单元测试能运行正常基本也就没什么问题。

unity3d android 插件

阅读数 484

没有更多推荐了,返回首页