2012-12-20 14:09:39 z871293499 阅读数 456
  • Unity3D移动端实战经验分享

    主要是围绕资源加载效率的优化,文本文件加载,比如xml序列化读取,protobuf文件序列化,以及消息事件封装及应用,shader的优化及运用,移动端实时阴影的绘制。

    22595 人正在学习 去看看 姜雪伟
用unity3d能够制作出跨平台的3d游戏,unity3d是一款非常比较容易入门的一款游戏软件,当然另外还可以制作出更加酷炫的ar应用以及游戏,但是在展示ar应用时,动画老是自动播放,解决办法是,将ImageTarget中子物体下的属性animation  中 play autoanimatically 取消勾选,然后在DefaultTrackableEventHandler文件中进行 动画play,这样就问题解决了
2015-03-01 15:42:53 book_longssl 阅读数 1680
  • Unity3D移动端实战经验分享

    主要是围绕资源加载效率的优化,文本文件加载,比如xml序列化读取,protobuf文件序列化,以及消息事件封装及应用,shader的优化及运用,移动端实时阴影的绘制。

    22595 人正在学习 去看看 姜雪伟

    



  介绍
  JSON是一个简单的,但功能强大的序列化数据格式。它定义了简单的类型,如布尔,数(int和float)和字符串,和几个数据结构:list和dictionnary。可以在http://JSON.org了解关于JSON的更多信息。
  litjson是用C #编写的,它的目的是要小,快速,易用。它使用了Mono框架。
  安装LitJSON
  将LitJSON编译好的dll文件通过Import New Asset的方式导入到项目中,再使用Using LitJSON即可使用JSONMapper类中的简便方法。dll的下载地址在这里.
  将JSON转化为Object并可逆向转化
  为了在.Net程序中使用JSON格式的数据。一个自然的方法是使用JSON文本生成一个特定的类的一个新实例;为了匹配类的格式,一般存储的JSON字符串是一个字典。
  另一方面,为了将对象序列化为JSON字符串,一个简单的导出操作,听起来是个好主意。
  为了这个目的,LitJSON包引入了JsonMapper类,它提供了两个用于做到 JSON转化为object 和 object转化为JSON 的主要方法。这两个方法是jsonmapper.toobject和jsonmapper.tojson。
  将object转化为字符串之后,我们就可以将这个字符串很方便地在文件中读取和写入了。
  一个简单的JsonMapper的例子
  在下面的例子中,ToObject方法有一个泛型参数,来指定返回的某种特定的数据类型:即JsonMapper.ToObjectT。
  
using LitJson;
  using System;
  public class Person
  {
  // C# 3.0 auto-implemented properties
  public string   Name     { get; set; }
  public int      Age      { get; set; }
  public DateTime Birthday { get; set; }
  }
  public class JsonSample
  {
  public static void Main()
  {
  PersonToJson();
  JsonToPerson();
  }
  public static void PersonToJson()
  {
  Person bill = new Person();
  bill.Name = "William Shakespeare";
  bill.Age  = 51;
  bill.Birthday = new DateTime(1564, 4, 26);
  string json_bill = JsonMapper.ToJson(bill);
  Console.WriteLine(json_bill);
  }
  public static void JsonToPerson()
  {
  string json = @"
  {
  ""Name""     : ""Thomas More"",
  ""Age""      : 57,
  ""Birthday"" : ""02/07/1478 00:00:00""
  }";
  Person thomas = JsonMapper.ToObjectPerson(json);
  Console.WriteLine("Thomas' age: {0}", thomas.Age);
  }
  }


  上文的输出:
  {"Name":"William Shakespeare","Age":51,"Birthday":"04/26/1564 00:00:00"}
  Thomas' age: 57
  使用非泛型的JsonMapper.ToObject
  当不存在特定的JSON数据类时,它将返回一个JSONData实例。JSONData是一种通用型可以保存任何数据类型支持JSON,包括list和dictionary。
  声明:此篇文档时来自于【狗刨学习网】社区-unity极致学院,是网友自行发布的Unity3D学习文章,如果有什么内容侵犯了你的相关权益,请与官方沟通,我们会即时处理。
using LitJson;
  using System;
  public class JsonSample
  {
  public static void Main()
  {
  string json = @"
  {
  ""album"" : {
  ""name""   : ""The Dark Side of the Moon"",
  ""artist"" : ""Pink Floyd"",
  ""year""   : 1973,
  ""tracks"" : [
  ""Speak To Me"",
  ""Breathe"",
  ""On The Run""
  ]
  }
  }
  ";
  LoadAlbumData(json);
  }
  public static void LoadAlbumData(string json_text)
  {
  Console.WriteLine("Reading data from the following JSON string: {0}",
  json_text);
  JsonData data = JsonMapper.ToObject(json_text);
  // Dictionaries are accessed like a hash-table
  Console.WriteLine("Album's name: {0}", data["album"]["name"]);
  // Scalar elements stored in a JsonData instance can be cast to
  // their natural types
  string artist = (string) data["album"]["artist"];
  int    year   = (int) data["album"]["year"];
  Console.WriteLine("Recorded by {0} in {1}", artist, year);
  // Arrays are accessed like regular lists as well
  Console.WriteLine("First track: {0}", data["album"]["tracks"][0]);
  }
  }
  上面例子的输出:
  Reading data from the following JSON string:
  {
  "album" : {
  "name"   : "The Dark Side of the Moon",
  "artist" : "Pink Floyd",
  "year"   : 1973,
  "tracks" : [
  "Speak To Me",
  "Breathe",
  "On The Run"
  ]
  }
  }
  Album's name: The Dark Side of the Moon
  Recorded by Pink Floyd in 1973
  First track: Speak To Me
  Reader和Writer
  一些人喜欢使用stream的方式处理JSON数据,对于他们, 我们提供的接口是jsonreader和jsonwriter。
  JSONMapper实际上是建立在以上两个类的基础上的,所以你可以把这两个类当成是litJSON的底层接口。
  使用JsonReader
  using LitJson;
  using System;
  public class DataReader
  {
  public static void Main()
  {
  string sample = @"{
  ""name""  : ""Bill"",
  ""age""   : 32,
  ""awake"" : true,
  ""n""     : 1994.0226,
  ""note""  : [ ""life"", ""is"", ""but"", ""a"", ""dream"" ]
  }";
  PrintJson(sample);
  }
  public static void PrintJson(string json)
  {
  JsonReader reader = new JsonReader(json);
  Console.WriteLine ("{0,14} {1,10} {2,16}", "Token", "Value", "Type");
  Console.WriteLine (new String ('-', 42));
  // The Read() method returns false when there's nothing else to read
  while (reader.Read()) {
  string type = reader.Value != null ?
  reader.Value.GetType().ToString() : "";
  Console.WriteLine("{0,14} {1,10} {2,16}",
  reader.Token, reader.Value, type);
  }
  }
  }


  输出如下:
  
Token      Value             Type
  ------------------------------------------
  ObjectStart                           
  PropertyName       name    System.String
  String       Bill    System.String
  PropertyName        age    System.String
  Int         32     System.Int32
  PropertyName      awake    System.String
  Boolean       True   System.Boolean
  PropertyName          n    System.String
  Double  1994.0226    System.Double
  PropertyName       note    System.String
  ArrayStart                           
  String       life    System.String
  String         is    System.String
  String        but    System.String
  String          a    System.String
  String      dream    System.String
  ArrayEnd                           
  ObjectEnd





2014-10-01 16:21:48 u014749760 阅读数 1432
  • Unity3D移动端实战经验分享

    主要是围绕资源加载效率的优化,文本文件加载,比如xml序列化读取,protobuf文件序列化,以及消息事件封装及应用,shader的优化及运用,移动端实时阴影的绘制。

    22595 人正在学习 去看看 姜雪伟

Unity 3D 文件导入出错

安装unity 时我选择了free版的,打开已有项目时出现如下错误提示



解决办法:

先把要导入的文件先拷贝到unity3d安装目录下对应的文件夹内,之后再返回unity3d软件,右键选择“导入”。


2015-02-04 09:53:13 book_longssl 阅读数 821
  • Unity3D移动端实战经验分享

    主要是围绕资源加载效率的优化,文本文件加载,比如xml序列化读取,protobuf文件序列化,以及消息事件封装及应用,shader的优化及运用,移动端实时阴影的绘制。

    22595 人正在学习 去看看 姜雪伟

Mecanim是Unity新增的动画系统,其功能强大而灵活,让人类和非人类角色栩栩如生。Mecanim的重定向极大的提供了工作效率,而且占用极少CPU周期。使用从Unity资源商店找到的动画资源,或把您自己的动画文件(动作捕捉或关键帧)导入编辑器,启动或实现整个项目,并将它们转换为您自己的可重定向的动画资源。

轻松地构建和编辑复杂的状态机和混合树。Unity编辑器提供强大的工具,用于分割、创建循环和从导入的动画文件中提取轨迹。然后可以把这些动画短片用作一个多层混合树的叶子,或者作为分层状态机中的一种状态。混合树让您只使用几个动画剪辑就能创建各种各样的运动。在混合树编辑器中,您可以定义混合参数并在3D视图中预览混合动画。

可以使用自动创建的IK(反向动力学)骨架.

简单地说,由父骨骼的方位和子骨骼的相对变换得到子骨骼的方位,称为正向动力学(Forward Kinematics,FK);而反向动力学(Inverse kinematics,IK)则是先确定子骨骼的方位,反向推导出其继承链上n级父骨骼方位 从而确定整条骨骼链的方法。

MecAnim 角色动画系统中,我们需要通过以下步骤实现Unity中的角色动画:

1.导入角色动画

2.创建角色动画Avatar

3.添加角色动画控制器、设置状态机、设置混合树。

4.实现编码等控制角色动画


2016-11-29 16:10:34 qq_35738633 阅读数 333
  • Unity3D移动端实战经验分享

    主要是围绕资源加载效率的优化,文本文件加载,比如xml序列化读取,protobuf文件序列化,以及消息事件封装及应用,shader的优化及运用,移动端实时阴影的绘制。

    22595 人正在学习 去看看 姜雪伟
using UnityEngine;
using UnityEditor;
using System.IO;
public class Test : Editor
{
    public static byte[] bytes;
 /// <summary>
 /// 在菜单栏创建窗口
 /// </summary>
    [MenuItem("Assets/读取内容")]
   public static void Read()
    {
       // char vale;


        //创建一个txt的文件,
// File.Create(Application.dataPath + "/bb.txt");
        
        //读文件里的内容,转换成字节,文件要utf—8格式的
     bytes =   File.ReadAllBytes(Application.dataPath + "/bb.txt");
     //   for (int i = 0; i < bytes.Length; i++)
     //   {
     //    vale=  (char)bytes[i];
     //       Debug.Log(vale);
     //   }
       
        //刷新
        AssetDatabase.Refresh();
    }
    [MenuItem("Assets/复制选中的文件")]
    public static void InTxt()
    {
        //创建个文件在里面写字符
        //File.WriteAllText(Application.dataPath+"/aaa.txt", "1555");
        //选取的object这种内型的对象
      UnityEngine.Object o=  Selection.activeObject;
        if (o == null)
        {
            Debug.Log("当前没有选择任何东西,取消复制");
            return;
        }
        bytes = File.ReadAllBytes(Application.dataPath + "/"+o.name+".txt");
  FileStream str=      File.Create(Application.dataPath + "/" + "(nool)"+ o.name +".txt");
        //开始复制你选中的文件
        str.BeginWrite(bytes, 0, bytes.Length, null, null);
        str.Close();
        str.Dispose();
        //刷新
        AssetDatabase.Refresh();
    }
    
}

unity3d 直接播放mp3

阅读数 6926

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