This post is continuous: how the data in the C # Unity game development--excel is in the game (ii)
A few days ago something so did not continue to update, today we went on to say. In the last post we saw that the Excel data has been generated in the. bin file, but in fact it is still not available in the game. There are two main aspects, the 1.bin file suffix makes us casually take the name, but this file unity does not buy. Because the binaries in unity must be named with. Bytes. 2. Before writing a file, you can actually compress the binary so that you can maximize your device space savings. In other words, we need to do several things after we generate the data instance: serialization---compression--write the file.
The way is basically the same way as in the post, but because we want to compress the serialized data, we can't serialize the data into the file stream directly, the second is serialize into a memorystream and then take out the binary data compression and then write the file.
MemoryStream ms = new MemoryStream (); Serializer.serialize <staticdata> (MS, (Staticdata) staticdata); byte [] byts = Ms. ToArray (); System.IO.FileStream stream1 = new System.IO.FileStream ( Application.datapath + /resources/ Staticdatas.bytes = new System.IO.BinaryWriter (STREAM1); Writer. Write (GZIP. Encode (Byts)); Writer. Close (); Stream1. Close ();
Oh, plus these words will be OK. Explain that we use ICSHARPCODE.SHARPZIPLIB.GZIP this dll,gzip use method can refer to this address http://community.sharpdevelop.net/forums/t/11005. ASPX, here I wrote a gzip tool class on two ways
Public Static byte[] Encode (byte[] bin) {MemoryStream ms=NewMemoryStream (); Gzipoutputstream Gzp=NewGzipoutputstream (MS); Gzp. Write (Bin,0, bin. Length); Gzp. Close (); returnMs. ToArray (); } Public Static byte[] Decode (byte[] bin) {Gzipinputstream Gzp=NewGzipinputstream (NewMemoryStream (bin)); MemoryStream re=NewMemoryStream (); intCount =0; byte[] data =New byte[4096]; while(Count = Gzp. Read (data,0, data. Length))! =0) {Re. Write (data,0, Count); } returnRe. ToArray (); }
View Code
Then, we're looking at how it's used in the game. The use is also very simple, because the front has already generated the class and so on, so, look at the code.
byte [] bytes = (resources.load ("staticdatas" as textasset). bytes; New MemoryStream (GZIP). Decode (bytes)); = Serializer.deserialize<staticdata> (ms);
Now we can see the data in the game, the use of the time direct data.
Oh, this is the end of the subject.
Everyone will go through the process of not meeting, if there are any flaws also ask you to advise! Thank you!
How data in the C # Unity game development--excel is in the game (iii)